# This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # fx() { i=0 for (( ; i < 3; i++ )) do echo $i done for (( i=0; ; i++ )) do if (( i >= 3 )); then break; fi echo $i done for (( i=0; i<3; )) do echo $i (( i++ )) done i=0 for (( ; ; )) do if (( i > 2 )); then break; fi echo $i; (( i++ )) done i=0 for ((;;)) do if (( i > 2 )); then break; fi echo $i; (( i++ )) done } for (( i=0; "i < 3" ; i++ )) do echo $i done i=0 for (( ; "i < 3"; i++ )) do echo $i done for (( i=0; ; i++ )) do if (( i >= 3 )); then break; fi echo $i done for ((i = 0; ;i++ )) do echo $i if (( i < 3 )); then (( i++ )) continue; fi break done type fx fx # errors { ${THIS_SH} -c 'for (( i=0; "i < 3" )) do echo $i done' ; echo $? ; } 2>&1 | sed 's|^.*/||' #echo $? { ${THIS_SH} -c 'for (( i=0; i < 3; i++; 7 )) do echo $i done' ; echo $?; } 2>&1 | sed 's|^.*/||' #echo $? # one-liners added in post-bash-2.04 for ((i=0; i < 20; i++)) do : ; done echo $i for ((i=0; i < 20; i++)) { : ; } echo $i # added post-bash-4.2 for (( i = j = k = 1; i % 9 || (j *= -1, $( ((i%9)) || printf " " >&2; echo 0), k++ <= 10); i += j )) do printf "$i" done echo ( for (( i = j = k = 1; i % 9 || (j *= -1, $( ((i%9)) || printf " " >&2; echo 0), k++ <= 10); i += j )) do printf "$i" done ) echo for (( i = 4; ;i--)) ; do echo $i; if (( $i == 0 )); then break; fi; done for (( i = 4;;i--)) ; do echo $i; if (( $i == 0 )); then break; fi; done i=4 ; for (( ;;i--)) ; do echo -n $i; if (( i == 0 )); then break; fi; done; echo # arithmetic for commands with expression errors for (( i=1; i < 4; 7++ )); do echo ok$i ; done for (( i=2; i < 4/0; 7++ )); do echo whoops1 ; done for (( i=2/0; i < 4; 7++ )); do echo whoops2 ; done for (( 7=4 ; 7 > 7; )); do echo whoops3; done for ((j=;;)); do :; done echo X break echo Y # arithmetic for commands need to skip over command substitutions for (( $(case x in x) esac);; )); do break; done for (( ${ case x in x) esac; };; )); do break; done