1.条件测试语句能够让Shell脚本根据实际工作灵活调整工作内容,例如判断系统的状态后执行指定的工作,或创建指定数量的用户,批量修改用户密码,这些都可以让Shell脚本通过条件测试语句完成。
if条件语句
if条件语句分为单分支结构、双分支结构、多分支结构,复杂度逐级上升,但却可以让Shell脚本更加的灵活。
单分支结构:
由if、then、fi关键词组成,只在条件成立后执行。
单分支if语句:判断目录是否存在,若不存在则自动创建。
编写Shell脚本并写入下面的语句:
1
2
3
4
5
6
|
#!/bin/bash DIR= "/home/jacun" if [ ! -e $DIR ] then mkdir -p $DIR fi |
执行脚本:
1
|
sh DemoCreateFolder.sh |
查看该目录是否被创建:
1
|
ls -d /home/jacun |
双分支结构
由if、then、else、fi关键词组成,做条件成立或条件不成立的判断。
双分支if语句:判断指定主机能否ping通,根据返回结果分别给予提示或警告。
为了减少用户的等待时间,需要为ping命令追加-c参数代表发送数据包的个数,-i代表每0.2秒发送一个数据包,-W则为3秒即超时。而$1为用户输入的第一个参数(IP地址),$?为上一条命令的执行结果,判断是否等于0(即成功)。
1
2
3
4
5
6
7
8
|
#!/bin/bash ping -c 3 -i 0.2 -W 3 $1 &> /home/jacun/jacun if [ $? - eq 0 ] then echo "$1 is OK!" else echo "$1 is down" fi |
1
|
sh DemoPing.sh 192.168.20.47 |
检测主机IP地址,根据返回值判断是否OK:
判断主机出现网络故障:
多分支结构
由if、then、else、elif、fi关键词组成。
多分支if语句:
判断用户输入的分数在那个区间内,然后判定为优秀、合格或不及格:
read命令用于将用户的输入赋值给指定变量,格式为:(read -p [提示语句] 变量名)
使用read命令让用户为GRADE变量赋值,判断分数必须同时满足大于85且小于100才输出"优秀",判断分数必须同时满足大于70且小于84才输出"合格",其余的情况输出"不及格"。
创建并编辑DemoGrade.sh
1
|
vim DemoGrade.sh |
编辑内容:
1
2
3
4
5
6
7
8
|
#!/bin/bash read -p "请输入分数(0-100):" GRADE if [ $GRADE - ge 85 ] && [ $GRADE - le 100 ]; then echo "$GRADE 优秀" elif [ $GRADE - ge 70 ] && [ $GRADE - le 84 ]; then echo "$GRADE 合格" else echo "$GRADE 不及格" fi |