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
本文通过几个具体的案例展示了Shell脚本中case和while语句的应用。包括文件类型判断、变量模式匹配、从文件及命令读取数据等实用场景。
1270

被折叠的 条评论
为什么被折叠?



