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)结构,当然在本例中逻辑上就不通了,但格式上能这么写。