- 文件测试
- 格式:[ 操作符 文件或目录 ]
[root@localhost ~]# [ -d /etc/ssh ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ -d /etc/hosts ]
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ -e /dev/cdrom ] && echo "YES"
YES
[root@localhost ~]# [ -e /dev/usb ] && echo "YES"
- 整数值比较
- 格式:[ 整数1 操作符 整数2 ]
[root@localhost ~]# who | wc -l
7
[root@localhost ~]# [ $(who | wc -l) -gt 1 ] && echo "Too many."
Too many.
[root@localhost ~]# [ $(who | wc -l) -ge 2 ] && echo "> = 2."
[root@localhost ~]# FreeCC=$(free -m | grep "Mem" | awk '{print $4}')
[root@localhost ~]# [ $FreeCC -lt 1024 ] && echo ${FreeCC}MB
864MB
- 字符串比较
- 格式1:[ 字符串1 = 字符串2 ]
[ 字符串1 != 字符串2 ]
格式2:[ -z 字符串 ]
常用的测试操作符
[root@localhost ~]# echo $LANG
zh_CN.UTF-8
[root@localhost ~]# [ $LANG != "en.US" ] && echo "Not en.US"
Not en.US
[root@localhost ~]# read -p "是否覆盖现有文件(yes/no)?" ACK
是否覆盖现有文件(yes/no)?yes
[root@localhost ~]# [ $ACK = "yes" ] && echo "覆盖"
覆盖
[root@localhost ~]# echo $USER
root
[root@localhost ~]# [ $USER != "teacher" ] && echo "Not teacher"
Not teacher
- 单分支if语句
- 判断挂载点目录,若不存在则自动创建
- [root@localhost ~]# vi chkmountdir.sh
- #!/bin/bash
- MOUNT_DIR="/media/cdrom/"
- if [ ! -d $MOUNT_DIR ]
- then
- mkdir -p $MOUNT_DIR
- fi
- [root@localhost ~]# ls -ld /media/cdrom/
- ls: /media/cdrom/: 没有那个文件或目录
- [root@localhost ~]# sh chkmountdir.sh
- [root@localhost ~]# ls -ld /media/cdrom/
- drwxr-xr-x 2 root root 4096 05-05 07:18 /media/cdrom/
- 双分支if语句
- 判断目标主机是否存活,显示检测结果
- [root@localhost ~]# vi 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@localhost ~]# sh pinghost.sh www.lzzy.net
- Host 192.168.4.11 is up.
- [root@localhost ~]# sh pinghost.sh www.aaa.com
- Host 192.168.4.13 is down.
- 多分支if语句
- 判断分数范围,分出优秀、合格、不合格三档
- [root@localhost ~]# vi gradediv.sh
- #!/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
- [root@localhost ~]# sh gradediv.sh
- 请输入您的分数(0-100):89
- 89 分!优秀