ksh control statement

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值