I tried it with some example but it is not clear to me.
FIRST EXAMPLE
#!/bin/bash i=0 while [ $i -lt 10 ] do echo "$i" i=`echo "$i + 1" | bc` done
output ===> 0,1,2,3,4,5,6,7,8,9
now when i executed while “while [ true ] ” it gives the output as infinite loop //I agree//
but when i executed while “while [ false ] ” again it gives the output as infinite loop. /I dont agree/
Can you please explain the second while loop? and how it is working actually?
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
Answer
In while [ false ]
the false
is neither a command nor a boolean value. The while
expects a command but [ ... ]
with no operators just checks for any non-empty string. Thus [ false ]
is true. It is in this sense the same as [ faaaalseeee ]
.
What you meant is:
while true; do ... while false; do ...