Case Statement
Simple Case
case ${FileType} in SHELL) FileType=SHELL ;; C) FileType=CPP ;; JAVE) FileType=JAVA ;; (*) FileType=UNKNOW return 255 esac
Pattern Case 1
case ${VAR} in (ABC) DO_COMMAND ;; (DE|FG) DO_COMMAND ;; (????W) DO_COMMAND ;; (????E) DO_COMMAND ;; (01???|02???) DO_COMMAND ;; (23???|42???) DO_COMMAND ;; ([-p+n]*) DO_COMMAND ;; ([+n]*) DO_COMMAND ;; ([-p]*|all|cur) DO_COMMAND ;; (*) DO_COMMAND ;; esac
Pattern Case 2
case "${Instream}-${Temporary}-${Concatenation}-${Generation#[-+]}" in (true-true-*-*) DO_COMMAND ;; (true-*-*-?*) DO_COMMAND ;; (*-true-*-?*) DO_COMMAND ;; (true-*-true-|*-true-true-) DO_COMMAND ;; (true-*-false-|*-true-false-) DO_COMMAND ;; (*-*-true-*) DO_COMMAND ;; (*-*-*-*) DO_COMMAND ;; (*) DO_COMMAND ;; esac
Pattern Case 3
foo='abcdef' pattern='abc*' case ${foo} in (${pattern}) DO_COMMAND ;; (*) DO_COMMAND ;; esac
While Statement
Read from file
while IFS=";" read VAR1 VAR2 VARDummy; do DO_COMMAND done < ${INPUTFILE} # Line of ${INPUTFILE} has 3 fields, separated with a ';'
Read from command
while read line do DO_COMMAND done
or
ls "*.sh" | while read File; do echo ${File} done
or
cat ${OUT_FILE}| while read Line; do echo ${Line} done
Read from variable
while read line; do DO_COMMAND done <<-end_of_read ${VAR} # or, $(echo ${VAR}) end_of_read
or
while read line; do DO_COMMAND done <-end_of_read $(echo ${VAR} | tr ',' '\n') end_of_read
or
echo ${VAR} | tr ',' '\n' | while read line; do DO_COMMAND done