while : ; do [[ -f "/path/to/file" ]] && break echo "Pausing until file exists." sleep 1 done
Sem usar algo como inotify
, esse é o limite do que você poderá fazer.
O while
acima apenas usa :
como sua condicional, o que significa apenas "fazer até matarmos".
A linha importante é o teste [[
. O teste condicional aqui não usa a instrução if
. Isso ocorre porque [[
é um comando real e NÃO parte da instrução if
. Isso executa [[ -f "/path/to/file" ]]
e o &&
verifica o status de saída do comando [[
e executa a seguinte instrução, se esse status de saída for 0
(sucesso). A seguinte declaração aqui é break
, que fechará o loop atual em que seu script está.
Observação: em bash
, é altamente recomendável usar [[
em vez de [
. Ele tem todos os recursos de [
, mas é muito mais poderoso e simples de usar.