Ao lidar com códigos de retorno, "0" é um sucesso e não-zero é uma falha. A sintaxe de um loop while é:
while COMMANDS; do ...; done
A instrução while
verifica o código de retorno do último comando na lista de comandos fornecida. Em seu último exemplo de while 0
, isso tentará executar um comando chamado "0" e verificar seu código de retorno.
Um literal 0 não é especial para basear fora do contexto aritmético. Dentro desse contexto, 0 é considerado falso. Por exemplo
while (( 0 )); do
... # never executes
end
Este caso é especial, pois a palavra-chave ((
é tratada como um comando, que retorna diferente de zero porque o resultado é 0.