这两个脚本,你更喜欢哪一个?
Linux云计算交流群:720995729
如果你正在写一个脚本,需要通过用户输入一个字符串,来决定后面的程序是否执行。并且还要考虑用户可能会输入大写字符或小写字符,或者不输入字符直接回车的情况。你会怎么写?
基于case匹配用户输入信息:
[root@www.lutixia.cn ~]# cat case.sh
#!/bin/bash
#by lutixia
read -n1 -p "你是否想继续安装lnmp呢? [Y/N] " answer
case $answer in
# 匹配用户输入的大写Y或者小写y:
Y|y)echo
echo "好的,正在安装lnmp..."
;;
# 匹配用户输入的大写N或者小写n:
N|n)echo
echo "好的,退出安装程序!"
exit
;;
esac
基于变量扩展与逻辑语法:
[root@www.lutixia.cn ~]# cat test2.sh
#!/bin/bash
#by lutixia
# 定义一个小写的变量,即使用户输入大写字母也自动变为小写
declare -l answer
# 限制用户输入一个字符:
read -n1 -p "你是否想继续安装lnmp呢? [Y/N] " answer
# 设置answer变量默认值为y,即用户直接回车时,变量值为y
[[ ${answer:="y"} = "y" ]] && echo -e "\n好的,正在安装lnmp..." || echo -e "\n好的,退出安装程序!"