一、扩展

双中括号判断输入的不等于1、2、3的用法

[[ ! $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
#!/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
#!/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
#!/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退出脚本,否则提示输入错误,也退出脚本