Shell基石:分支判断

Shell基石:分支判断_第1张图片
shell基础

方括号 [ ]

分支结构是 Shell 脚本中常见的结构。
分支判断的表达式一般是放在 [] 之间。例如:

#!/usr/bin/env bash
x=${1:-3}
if [ ! $x -gt 3 ]; then
    echo "${x} not gt 3"
elif [ $x -gt 3 ]; then
    echo "${x} gt 3"
fi
# 判断第一个参数(默认3)是否大于3

[ ] 之间,字符串比较采用:== != \< \>,例如:

# [ ab == abc ]; echo $?
1

# [ ab \< abc ]; echo $?
0

# [ ab != abc ]; echo $?
0

[ ] 之间,整数型的比较能采用的还有:-eq -ne -gt 等等的形式,如:

# [ 1 -eq 1 ]; echo $?
0

test 指令:

# test 1 -eq 1; echo $?
0

逻辑判断的与 -a 或 -o 非 !:

# [ 1 -le 0 -a 2 -ge 1 ]; echo $?
1

# [ 1 -le 2 -o 2 -ge 1 ]; echo $?
0

# [ ! 1 -le 0 -a 2 -ge 1 ]; echo $?
0

双中括号 [[ ]]:

在双中括号里面,与或表达式也可以这样表达:

# [[ 1 -le 0 && 2 -ge 1 ]]; echo $?
1

# [ 1 -le 0 ] && [ 2 -ge 1 ]; echo $?
1

# [[ 1 -le 2 || 2 -ge 1 ]]; echo $?
0

# [ 1 -le 2 ] || [ 2 -ge 1 ]; echo $?
0

双括号 (( )):

# ((1 ==1)); echo $?
0

# ((1 ==1 && 0 == 1)); echo $?
1

# ((1 ==1)) || ((0 == 1)); echo $?
0

switch分支:

#!/usr/bin/env bash
x=${1:-""}
case ${x} in
start)
    echo "start ok"
;; # 注意用双分号结束分支
stop)
    echo "stopok"
;;
restart)
    echo "restart ok"
;;
*)
    echo "no param"
;;
esac # 注意闭合标签

end.

你可能感兴趣的:(Shell基石:分支判断)