一、扩展

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

1
2
3
4
5
[[ ! $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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/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退出脚本,否则提示输入错误,也退出脚本