howtos:bash_loop_examples
no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
— | howtos:bash_loop_examples [02/12/2018 21:34] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== For sample ====== | ||
+ | < | ||
+ | #!/bin/bash | ||
+ | for i in $( ls ); do | ||
+ | echo item: $i | ||
+ | done | ||
+ | </ | ||
+ | | ||
+ | |||
+ | ====== C-like for ====== | ||
+ | < | ||
+ | |||
+ | #!/bin/bash | ||
+ | for i in `seq 1 10`; | ||
+ | do | ||
+ | echo $i | ||
+ | done | ||
+ | |||
+ | </ | ||
+ | | ||
+ | ====== While sample ====== | ||
+ | |||
+ | < | ||
+ | # | ||
+ | COUNTER=0 | ||
+ | while [ $COUNTER -lt 10 ]; do | ||
+ | echo The counter is $COUNTER | ||
+ | let COUNTER=COUNTER+1 | ||
+ | done | ||
+ | |||
+ | </ | ||
+ | |||
+ | < | ||
+ | |||
+ | #!/bin/bash | ||
+ | |||
+ | var0=0 | ||
+ | LIMIT=10 | ||
+ | |||
+ | while [ " | ||
+ | # ^ ^ | ||
+ | # Spaces, because these are " | ||
+ | do | ||
+ | echo -n "$var0 " | ||
+ | # | ||
+ | |||
+ | var0=`expr $var0 + 1` # var0=$(($var0+1)) | ||
+ | # var0=$((var0 + 1)) also works. | ||
+ | # let "var0 += 1" | ||
+ | done # Various other methods also work. | ||
+ | |||
+ | echo | ||
+ | |||
+ | exit 0 | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | #!/bin/bash | ||
+ | |||
+ | echo | ||
+ | # Equivalent to: | ||
+ | while [ " | ||
+ | do | ||
+ | echo "Input variable #1 (end to exit) " | ||
+ | read var1 # Not 'read $var1' (why?). | ||
+ | echo " | ||
+ | # If input is ' | ||
+ | # Does not test for termination condition until top of loop. | ||
+ | echo | ||
+ | done | ||
+ | |||
+ | exit 0 | ||
+ | |||
+ | </ | ||
+ | |||
+ | Inside its test brackets, a while loop can call a function: | ||
+ | < | ||
+ | |||
+ | t=0 | ||
+ | |||
+ | condition () | ||
+ | { | ||
+ | ((t++)) | ||
+ | |||
+ | if [ $t -lt 5 ] | ||
+ | then | ||
+ | return 0 # true | ||
+ | else | ||
+ | return 1 # false | ||
+ | fi | ||
+ | } | ||
+ | |||
+ | while condition | ||
+ | # | ||
+ | # | ||
+ | do | ||
+ | echo "Still going: t = $t" | ||
+ | done | ||
+ | |||
+ | # Still going: t = 1 | ||
+ | # Still going: t = 2 | ||
+ | # Still going: t = 3 | ||
+ | # Still going: t = 4 | ||
+ | </ | ||
+ | |||
+ | ====== Until sample ====== | ||
+ | |||
+ | < | ||
+ | # | ||
+ | COUNTER=20 | ||
+ | until [ $COUNTER -lt 10 ]; do | ||
+ | echo COUNTER $COUNTER | ||
+ | let COUNTER-=1 | ||
+ | done | ||
+ | |||
+ | </ | ||
+ | |||
+ | ====== Snow in Terminal ====== | ||
+ | < | ||
+ | while true | ||
+ | do | ||
+ | N=$(($RANDOM % $COLUMNS)) | ||
+ | for i in $( seq 1 $N ) | ||
+ | do | ||
+ | echo -n " " | ||
+ | done | ||
+ | echo \* | ||
+ | done | ||
+ | </ | ||
+ | |||
+ | And as a one-liner: | ||
+ | < | ||
+ | ---- | ||
+ | Source: http:// |
howtos/bash_loop_examples.txt · Last modified: 02/12/2018 21:34 by 127.0.0.1