第七章
1、使用test进行条件测试
root@centos ~]# test -d/media
[root@centos ~]# echo $?
2、使用括号进行条件测试
[root@centos ~]# [ -d /media/ ]
[root@centos ~]# echo $?
[root@centos ~]# [ -d /media/cdrom/Server ]
[root@centos ~]# echo $?
[root@centos ~]# [ -d /media/cdrom/Server ] && echo “YES”
[root@centos ~]# [ -d /media/cdrom ] && echo “YES”
3、整数值比较
[root@centos ~]# Unum=who | wc -l
[root@centos ~]# [ KaTeX parse error: Expected 'EOF', got '&' at position 14: Unum -gt 5 ] &̲& echo "Too man…(free -m | grep “Nem: " | awk ‘{print $6}’)
[root@centos ~]# [ $FreeCC -lt 1024 ] && echo ${FreeCC}MB
505MB
4、字符串比较
[root@centos ~]# echo $LANG
zh_CN.UTF-8
[root@centos ~]# [ $LANG != “en.US” ] && echo “Not en.US”
Not en.US
[root@centos ~]# read -p “是否覆盖现有文件(yes/no)?” ACK
是否覆盖现有文件(yes/no)?yes
[root@centos ~]# [ $ACK = “yes” ] && echo “覆盖”
[root@centos ~]# read -p “是否覆盖现有文件(yes/no)?” ACK
是否覆盖现有文件(yes/no)?no
[root@centos ~]# [ KaTeX parse error: Expected 'EOF', got '&' at position 14: ACK = "no" ] &̲& echo "不覆盖" 5、…(uname -r |awk -F. '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 1}̲') [root@centos…(uname -r |awk -F. ‘{print $2}’)
[root@centos ~]# [ $Mnum -ge 3 ] && [ $Snum -gt 4 ] && echo “符合要求”
符合要求
6、单分支if语句
[root@centos ~]# vim chkmountdir.sh
#!/bin/bash
MOUNT_DIR=”/media/cdrom"
if [ ! -d $MOUNT_DIR ]
then
mkdir -p KaTeX parse error: Expected 'EOF', got '#' at position 29: …[root@centos ~]#̲ chmod +x chkmo…USER" != “root” ]
then
echo “错误:非root用户,权限不足!”
exit 1
fi
fdisk -l /dev/sda
[root@centos ~]# chmod +x /opt/chkifroot.sh
[jerry@localhost ~]$ /opt/chkifroot.sh
错误:非root用户,权限不足!
[jerry@localhost ~]$
[root@centos ~]# /opt/chkifroot.sh
磁盘 /dev/sda:78.9 GB, 78899345920 字节,167772160 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0000f2a5
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 167772159 83680256 8e Linux LVM
2、双分支if语句
[root@centos ~]# vim pinghost.sh
#!/bin/bash
ping -c 3 -i 0.2 -w 3 $1 $> /dev/null
if [ $? -eq 0 ]
then
echo “Host $1 is up.”
else
echo “Host $1 is down.”
fi
[root@centos ~]# chmod +x pinghost.sh
[root@centos ~]# ./pinghost.sh 192.168.4.11
Host 192.168.4.11 is up.
[root@centos ~]# ./pinghost.sh 192.168.4.13
Host 192.168.4.13 is down.
[root@centos ~]# vim chkvsftpd.sh
#!/bin/bash
systemctl status vsftpd &> /dev/null
if [
?
−
e
q
0
]
t
h
e
n
e
c
h
o
"
监
听
地
址
:
? -eq 0 ] then echo "监听地址:
?−eq0]thenecho"监听地址:(netstat -anpt | vsftpd |awk '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 4}̲')" echo "进程…(pgrep -x vsftpd)"
else
echo “警告:vsftpd 服务不可用!”
fi
[root@centos ~]# chmod +x chkvsftpd.sh
[root@centos ~]# ./chkvsftpd.sh
警告:vsftpd 服务不可用!
[root@centos ~]# systemctl start vsftpd
[root@centos ~]# ./chkvsftpd.sh
监听地址::::21
进程PID号:61072
3、多分枝if语句应用
[root@centos ~]# vim gradediv.sh
#!/bin/bash
read -p “请输入您的分数(0-100):” GRADE
if [ $GRADE -ge 85 ] && [
G
R
A
D
E
−
l
e
100
]
/
/
85
100
分
,
优
秀
t
h
e
n
e
c
h
o
"
GRADE -le 100 ] //85~100分,优秀 then echo "
GRADE−le100]//85 100分,优秀thenecho"GRADE 分, 优秀!"
elif [ $GRADE -ge 70 ] && [
G
R
A
D
E
−
l
e
84
]
/
/
70
84
分
,
合
格
t
h
e
n
e
c
h
o
"
GRADE -le 84 ] //70~84分,合格 then echo "
GRADE−le84]//70 84分,合格thenecho"GRADE 分, 合格!"
else
echo “$GRADE 分, 不合格!” //其他分数,不合格
fi
[root@centos ~]# chmod +x gradediv.sh
[root@centos ~]# ./gradediv.sh
请输入您的分数(0-100):67
67 分, 不合格!
[root@centos ~]# ./gradediv.sh
请输入您的分数(0-100):78
78 分, 合格!
[root@centos ~]# ./gradediv.sh
请输入您的分数(0-100):89
89 分, 优秀!