case esac 语句
参考 :https://blog.csdn.net/wu20093346/article/details/47210809
case ... esac 与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构。
case 语句匹配一个值或一个模式,如果匹配成功,执行相匹配的命令。case语句格式:
case $值 in
模式1)
命令
;;
模式2)
命令
;;
模式3|4)
命令
;;
*)
命令
;;
esac
ARG_ONE=NIL ARG_ONE=$1 echo ARG_ONE is $ARG_ONE case $ARG_ONE in 1) echo one ;; 2) echo two ;; 3|4) echo three or four ;; *) echo other ;; esac
case工作方式如上所示。取值后面必须为关键字 in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。;; 与其他语言中的 break 类似,意思是跳到整个 case 语句的最后。
取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。
最后以 esac 结束
下面是例子:
if语句
number类型数据做判断
ARG_ONE=NIL ARG_ONE=2 if [ $ARG_ONE = 2 ]; then echo two fi if [ $ARG_ONE = 3 ]; then echo three fi if [ $ARG_ONE = 4 ]; then echo four fi
字符串类型数据做判断
if [ "$test"x = "test"x ]; then
这里的关键有几点:
1 使用单个等号
2 注意到等号两边各有一个空格:这是unix shell的要求
3 注意到"$test"x最后的x,这是特意安排的,因为当$test为空的时候,上面的表达式就变成了x = testx,显然是不相等的。而如果没有这个x,表达式就会报错:[: =: unary operator expected
for循环
直接循环指定的值
for alpha in a b c d;do echo $alpha done
循环变量
list="a b c d" for alpha in $list;do echo $alpha done