Como executar o loop while no shell script para a condição FALSE?

1

Eu tentei com algum exemplo, mas não está claro para mim.

PRIMEIRO EXEMPLO

#!/bin/bash
i=0
while [ $i -lt 10 ]
do
    echo "$i"
    i='echo "$i + 1" | bc'
done

saída === > 0,1,2,3,4,5,6,7,8,9

agora quando eu executei enquanto "while [true]" ele da a saída como loop infinito // concordo //
mas quando eu executei enquanto "while [false]" novamente ele da a saída como loop infinito. / Eu não concordo /

Por favor, você pode explicar o segundo loop while? e como está funcionando realmente?

while [ false ]    #give the infinite loop
while [ true ]     #give the infinite loop
while [ 0 ]        #give the infinite loop
while [ 1 ]        #give the infinite loop
while [ 'ls' ]
while [ 'echo 1' ] #give the infinite loop
while((0))         #loop not execute
while((1))         #give the infinite loop
    
por Tiger 10.02.2016 / 18:32

1 resposta

2

Em while [ false ] , o false não é um comando nem um valor booleano. O while espera um comando, mas [ ... ] sem operadores apenas verifica se há alguma cadeia não vazia. Assim, [ false ] é verdadeiro. É nesse sentido o mesmo que [ faaaalseeee ] .

O que você quis dizer é:

while true; do ...

while false; do ...
    
por 10.02.2016 / 18:38