多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# **一、扩展** 双中括号判断输入的不等于1、2、3的用法 ```shell [[ ! $sum =~ [1-3] ]] && { echo "the num you input must be {1|2|3}" echo "input error" exit 4 } ``` # **二、案例1** 输入一个字符,如果是1则打印1,如果是2则打印2,不过都不是则提示错误并退出 ### 1) 脚本 * `cat /server/scripts/t7.sh ` ```shell #!/bin/bash echo -n "pls input a char:" read var [ "$var" == "1" ] && { echo 1 exit 0 } [ "$var" -eq "2" ] && { echo 2 exit 0 } [ "$var" != "1" -a "$var" -ne "2" ] && { echo error exit 0 } ``` ### 2) 执行 > * `sh /server/scripts/t7.sh ` pls input a char:1 1 > * `sh /server/scripts/t7.sh` pls input a char:2 2 > * `sh /server/scripts/t7.sh ` pls input a char:3 error # **三、案例2** 开发shell脚本,用read读入的方式比较两个整数的大小,禁用if,屏幕输出结果,提醒用户,需要对变量是否为数字及传参个数是否正确给予提示 ### 脚本 * `cat /server/scripts/t1.sh ` ```shell #!/bin/bash read -t 10 -p "pls input tow int:" a b #no.1 [ -z $a -o -z $b ] && { echo "errrr:input tow int" exit 1 } #no.2 expr $a + $b + 0 &>/dev/null [ $? -eq 0 ] || { echo "error:input int" exit 2 } #no.3 [ $a -eq $b ] && { echo '$a = $b' exit 0 } #no.4 [ $a -gt $b ] && echo '$a > $b'|| echo '$a < $b';exit 0 ``` ### 四、 案例3 打印选择菜单,按照选择想一件按照不同的web服务 * `cat /server/scripts/t2.sh ` ```shell #!/bin/bash path=/server/scripts [ ! -d "$path" ] && mkdir $path -p #以上定义路径并验证,不存在则创建 cat <<EOF 1.install lamp 2.install lnmp 3.exit Plase input the num you want: EOF #以上语句打印选择菜单 read num expr $num + 0 &>/dev/null [ $? -ne 0 ] && { echo "error input char: $num" echo "must input int: 1 2 3" exit 1 } #以上判断输入的是否为整数 [ $num -eq 1 ] && { echo "lamp is installing." sleep 2; [ -x $path/lamp.sh ] || { echo "$path/lamp.sh can not exec" exit 2 } $path/lamp.sh exit 0 } #以上执行lamp脚本,并判断脚本权限是否可执行 [ $num -eq 2 ] && { echo "lnmp is installing" source $path/lnmp.sh exit 0 } #以上是执行lnmp脚本,使用source命令不需要执行权限也可以执行 [ $num -eq 3 ] && exit 0 echo "error input int: $num" echo "must input num:1 2 3" exit 5 #输入3退出脚本,否则提示输入错误,也退出脚本 ```