Eu costumava escrever meus scripts assim:
some_command
while [ $? -ne 0 ] ; do
sleep 1
some_command
done
Sempre me irritava ter que escrever some_command
duas vezes. Posso colocá-lo dentro da seção de teste de loop de alguma forma?
shell-script
Mihai
fonte
fonte
while ! some_command; do several; commands; sleep 1; done
É para isso que serve o
until
loop:É a negação lógica de um
while
loop.A especificação diz:
The
until
LoopO
until
loop deve executar continuamente uma lista composta desde que outra lista composta tenha um status de saída diferente de zero.O formato do loop até é o seguinte:
until
comando será concluído. Caso contrário, a lista composta 2 será executada e o processo se repetirá.fonte
Você pode apenas fazer:
isso tem a desvantagem de que ele sempre dorme um segundo primeiro
Se você deseja poder sair de um número de comandos para sair com 0, você pode:
o que, obviamente, também funciona por apenas
some_command
fonte
[
e]
contornar os comandos.Nem
while ! ...
nemuntil ...
trabalhos sobre os sistemas que congelou seu ambiente shell antes POSIX.1-2001. Isso, no entanto, faz.Se você não precisa de portabilidade total, por que está escrevendo um script de shell? É mais provável que o Perl esteja disponível que o Bash.
(Como acima,
sleep
o comando é executado apenas se o comando falhar.)fonte