Eu tenho abaixo cenário como:
if [file exists]; then
exit
elif
recheck if file exist (max 10 times)
if found exit else recheck again as per counter
fi
Eu tenho abaixo cenário como:
if [file exists]; then
exit
elif
recheck if file exist (max 10 times)
if found exit else recheck again as per counter
fi
Se a contagem não for uma variável, você pode usar a expansão de chaves:
Se a contagem for uma variável, você pode usar o
seq
comando:Há muitas maneiras de fazer esse loop.
Com
ksh93
sintaxe (também suportada porzsh
ebash
):Para qualquer shell do tipo POSIX:
Ambos os loops dormem 10 segundos em cada iteração antes de testar a existência do arquivo novamente.
Depois que o loop terminar, você terá que testar a existência do arquivo uma última vez para descobrir se o loop foi encerrado devido à execução de 10 vezes ou devido à exibição do arquivo.
Se desejar, e se tiver acesso a inotify-tools, você pode substituir a
sleep 10
chamada porIsso esperaria que um evento de criação de arquivo ocorresse no diretório atual, mas atingiria o tempo limite após 10 segundos. Dessa forma, seu loop sairia assim que o nome de arquivo fornecido aparecesse (se aparecesse).
O código completo, com
inotifywait
(substitua porsleep 10
se você não quiser), pode parecerembora
test -e file && exit
seja mais flexível