Reputation: 467
I wait program finish and print nothing; but this intro in loop:
while [ 0 > 0 ]; do echo 1; done
logically 0 no't is > to 0... why get loop?
How I can get nothing by screen? and program finish fine?
After of my progam "nothing to do":
while [ 0 > 0 ]; do echo 1; done
I like in one line:
q = 0; while [ q < 9 ]; q ++; do echo q; done
it´s possible in one line?
Thanks
Upvotes: 6
Views: 11354
Reputation: 36229
q = 0; while [ q < 9 ]; q ++; do echo q; done
Just 5 errors in one line.
Possible solution:
q=0; while [[ q -lt 3 ]]; do ((q++)); echo $q; done
1
2
3
echoing values can be done with
echo {1..9}
too, but is not flexible, so you can't use variable expansion inside, like echo {1..$n}
. The canonical way of doing initialization, increment and threshold check, is a for loop:
for (( q=1; q < 4; ++q)); do echo $q ; done
There is the external program seq, which is not so much recommended, for that reason:
seq 1 3
First question:
while [ 0 > 0 ]; do echo 1; done
Look for a file 0 where you used file redirection (instead of -gt), like in echo foo > 0.file
.
Instead of
while [ 0 -gt 0 ]; do echo 1; done
because it does nothing. It doesn't wait for anything. Either your program is sequential, then it is finished at that point anyhow. Or there is a program/command in the background running, which doesn't care about this anti loop anyhow.
Upvotes: 13
Reputation: 2107
For your second question, use for (( expr1 ; expr2 ; expr3 )) ; do list ; done
Also refer to man bash
Upvotes: 0