Shell逻辑语句

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

  

posted on 2019-02-14 20:09  周公  阅读(121)  评论(0编辑  收藏  举报

导航