case 选择
2016-10-10
case 选择
在 shell 脚本中,除了用 if 来判断逻辑之外,还有一种常用的方式,那就是 case 了。具体格式为:
case 变量 in
value 1)
command
;;
value 2)
command
;;
value 3)
command
;;
*)
command
;;
esac
上面的结构中,不限制 value 的个数, * 则代表除了上面的 value 以外的其他值。下面写一个判断输入数值是奇数或偶数的脚本:
[root@133 ~]# vim case.sh
#!/bin/bash
read -p "Input a number:" n
a=$[$n%2]
case $a in
1)
echo "The number is odd."
;;
0)
echo "The number is even."
;;
*)
echo "It's not a number!"
;;
esac
$a 的值或为 1 或为 0,执行结果为:
[root@133 ~]# sh case.sh
Input a number:100
The number is even.
[root@133 ~]# sh case.sh
Input a number:101
The number is odd.
case 脚本常用于编写系统服务的启动脚本。例如,/etc/init.d/iptables 中就用到了。另外,在给出的判断选项,即本例中的 1)和 0)部分支持写成或结构,即 1|0)结构,当然在本例中逻辑上就不通了,但格式上能这么写。