文章目录
一、条件测试
1.1 文件测试与整数测试
1.1.1 test命令
●测试表达式是否成立,若成立返回0,否则返回其他数值
■常用的测试操作符举例:
[root@localhost ~]# [ -d /dev/disk/ ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ -d /dev/disk/server ]
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ -d /dev/disk/ ] && echo "YES"
YES
■整数值比较
【 整数1 操作符 整数2 】
■常用的测试操作符举例:
[root@localhost ~]# who | wc -l
3 ##有3个终端登录##
[root@localhost ~]# [ $(who | wc -l) -gt 2 ] && echo "Too many."
Too many. ##终端数大于2个,输出成功##
[root@localhost ~]# [ $(who | wc -l) -ge 3 ] && echo ">=3."
>=3. ####终端数大于等于3个,输出成功##
1.2 字符串测试与逻辑测试
■字符串比较
●格式1:【 字符串1 = 字符串2 】
【 字符串1 != 字符串2 】
●格式2:【 -z 字符串 】
[root@localhost ~]# echo $LANG
en_US.UTF-8
[root@localhost ~]# [ $LANG = "en_US" ] && echo "en_US."
[root@localhost ~]# [ $LANG = "en_US.UTF-8" ] && echo "en_US."
en_US. ##需要精确匹配才能输出正确信息##
■逻辑测试
格式1:【 表达式1 】 操作符 【 表达式2 】 …
格式2:命令1 操作符 命令2 …
[root@localhost opt]# [ -d /etc ] && [ -d /home ] && echo "You can open it"
You can open it
二、 if语句
2.1 if单分支语句
■单分支if语句
●判断挂载点目录,若不存在则自动创建
[root@localhost ~]# vi chkmountdir.sh
#!/bin/bash
MOUNT_DIR="/opt/cdrom/"
if [ ! -d $MOUNT_DIR ]
then
echo "创建$MOUNT_DIR" >>/opt/shell.log
echo "创建$MOUNT_DIR"
mkdir -p $MOUNT_DIR
fi
[root@localhost ~]# chmod +x chkmountdir.sh
[root@localhost ~]# ./chkmountdir.sh
创建/opt/cdrom/
2.2 if双分支语句
■双分支if语句
●判断目标主机是否存活,显示检测结果
[root@localhost ~]# vi pinghost.sh
#!/bin/bash
ping -c 3 -i 0.2 -W 3 $1 &>/dev/null
if [ &? = 0 ]
then
echo "Host $1 is up."
else
echo "Host $1 is down."
fi
[root@localhost ~]# chmod +x pinghost.sh
[root@localhost ~]# ./pinghost.sh 20.0.0.2
Host 20.0.0.2 is up.
[root@localhost ~]# ./pinghost.sh 20.0.0.111
Host 20.0.0.111 is down.
2.3 if多分支语句
■多分支if语句
●判断分数范围,分出优秀、合格、不合格以及无效分数四档
[root@localhost ~]# vi grade.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 分,合格!"
elif [ $GRADE -ge 0 ] && [ $GRADE -le 69 ]
then
echo "$GRADE 分,不合格!"
else
echo "分数无效,请重新输入!"
fi
[root@localhost ~]# chmod +x grade.sh
[root@localhost ~]# ./grade.sh
请输入您的分数(0~100):55
55 分,不合格!
[root@localhost ~]# ./grade.sh
请输入您的分数(0~100):99
99 分,优秀!
[root@localhost ~]# ./grade.sh
请输入您的分数(0~100):82
82 分,合格!
[root@localhost ~]# ./grade.sh
请输入您的分数(0~100):110
分数无效,请重新输入!
三、case分支语句
[root@localhost ~]# vi key.sh
#!/bin/bash
read -p "请输入一个字符,并按Enter键确认:" KEY
case "$KEY" in
[a-z]|[A-Z])
echo "您输入的是字母."
;;
[0-9])
echo "您输入的是数字."
;;
*)
echo "您输入的是空格、功能键或其他控制字符."
esac
[root@localhost ~]# chmod +x key.sh
[root@localhost ~]# ./key.sh
请输入一个字符,并按Enter键确认:a
您输入的是字母.
[root@localhost ~]# ./key.sh
请输入一个字符,并按Enter键确认:A^H
您输入的是空格、功能键或其他控制字符.
[root@localhost ~]# ./key.sh
请输入一个字符,并按Enter键确认:9
您输入的是数字.
[root@localhost ~]# ./key.sh
请输入一个字符,并按Enter键确认:D
您输入的是字母.