前言
shell 是一种脚本语言。脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译)shell 既是应用程序 又是一种脚本语言(应用程序 解析 脚本语言)。
正文
case … esac 为多选择语句,与C语言中的 switch … case 类似,每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束.
语法为:
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac
示例1
#提示输入 1 到 4,与每一种模式进行匹配
echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read a
case $a in
1) echo '你选择了 1'
;;
2) echo '你选择了 2'
;;
3) echo '你选择了 3'
;;
4) echo '你选择了 4'
;;
*) echo '你没有输入 1 到 4 之间的数字'
;;
esac
结果如下:
输入 1 到 4 之间的数字:
你输入的数字为:
5
你没有输入 1 到 4 之间的数字
示例2
#!/bin/bash
# 编写脚本,实现人机<石头,剪刀,布>游戏
game=(石头 剪刀 布)
num=$[RANDOM%3+1]
computer=${game[$num]}
# 通过随机数获取计算机的出拳
# 出拳的可能性保存在一个数组中,game[0],game[1],game[2]分别是 3 中不同的可能
echo "请根据下列提示选择您的出拳手势"
echo "1.石头"
echo "2.剪刀"
echo "3.布"
read -p "请选择 1‐3:" person
case $person in
1)
if [ $num -eq 1 ]
then
echo "平局"
elif [ $num -eq 2 ]
then
echo "你赢"
else
echo "计算机赢"
fi;;
2)
if [ $num -eq 1 ]
then
echo "计算机赢"
elif [ $num -eq 2 ]
then
echo "平局"
else
echo "你赢"
fi;;
3)
if [ $num -eq 1 ]
then
echo "你赢"
elif [ $num -eq 2 ]
then
echo "计算机赢"
else
echo "平局"
fi;;
*)
echo "必须输入 1‐3 的数字"
esac
结果如下:
结果如下:
0
请根据下列提示选择您的出拳手势
1.石头
2.剪刀
3.布
请选择 1‐3:1
平局