Shell入门教程:流程控制(4)case 条件判断

时间:2023-03-10 01:21:17
Shell入门教程:流程控制(4)case 条件判断

case的语法结构:

case 待测项 in
样式串1]
命令区域1
;;
(样式串2)
命令区域2
;;
样式串3)
命令区域3
;;
*)
命令区域
;;
esac
  • 命令区域,可以是单一指令或多行指令,但最后一个指令要以 ;; 结束。
  • 样式串行可用字符串和通配符组成,默认会区别大小写。
  • 如果样式串行有好几个字符串要对比,要使用 | 隔开。字符 | 有 “或”的意思,意即:只要符合其中之一,就算比较成功。
  • 样式串行可写成‘(样式串行)’,或省略左边的括号,写成 '样式串行)'。一般,以后面这个写法,较受欢迎。
  • 样式 *) 通常放在case最有一个区域,用来捕捉不符合制定样式的其他所有情况。
  • 最后用esac结束case语法。esac是case的反写。

举例:

#!/bin/bash

read yname
case $yname in
Jack | John | Joe)
echo 'Well...'
echo "Long time no see."
echo "How do you do ?"
;;
(Mary | Mary) echo 'Nice to meet you.';;
C*) echo 'Long time to see.';;
*) echo 'Hi!';;
esac