Index
- 输入一个数字,然后允许对应的一个命令
- 显示命令如下:
*cmd meau** 1-date 2-ls 3-who 4-pwd
- 当输入1时,会允许date,依此类推。
#!/bin/bash
##先把提示语打印出来
echo "*cmd meau** 1-date 2-ls 3-who 4-pwd"
##使用死循环,目的是为了当用户输入的字符并非要求的字符时,不能直接退出脚本,而是再次开始
while :
do
##然后开始使用read实现和用户交互,提示让用户输入一个数字
read -p "please input a number 1-4: " n
case $n in
1)
date
## 之所以要break,是因为当用户执行完命令就要退出了
break
;;
2)
ls
break
;;
3)
who
break
;;
4)
pwd
break
;;
*)
##如果输入的不是1-4的数字,提示出错
echo "Wrong input try again!"
;;
esac
done

总结
- read -p 可以在shell脚本中实现和用户交互的效果
- case ... esac 这种逻辑判断用法,非常适合做选择题,尤其是选项很多时,选项也可以有多个值,比如1|5
- 如果想要反复和用户交互,必须使用while循环,并借助break或者continue来控制循环流程
- break表示退出循环体,continue表示结束本次循环,进入下次循环