一、条件测试:
1、文本测试与整数测试:
*命令——test:
测试表达式是否成立,若成立返回0,否则返回其他数值。
格式:test 条件表达式
[ 条件表达式 ]
注意:在使用 [ *** ] 时中间的表达式前后要有空格,不然会报错!!!!
文本测试:
[ 操作符 文件或目录 ]
常用的测试操作符:
-d 测试是否为目录
-e 测试目录或文件是否存在
-f 测试是否为文件
-r 测试当前用户是否有权限读取
-w 测试当前用户是否有权限写入
-x 测试当前用户是否有权限执行
整数值比较:
[整数1 操作符 整数2]
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-le 小于或等于
-ge 大于或等于
常用的测试操作符:
[root@localhost ~]#who |wc -l
7
[root@localhost ~]#[$(who| wc -l)-gt 5] && echo "too many"
too many
[root@localhost ~]#[$(who| wc -l)-gt 10] && echo "> =10"
[ 55 -lt 88] && echo “yes” >>yes
[ ‘zhangsan’ == ‘zhangsan’ ] && echo “yes”
数值比较用:-lt
字符比较用:== 里面的字符用单引号,后面的yes用双引号;
[root@localhost ~]#FreeCC=$(free -m | grep "Mem: " | awd'{print $6}')
[root@localhost ~]#[ $FreeCC -lt 1024 ] && echo $(FreeCC)MB
275MB
在引用完整的命令用 (反撇)或者$( )
Free -m :查看内存参数 mem:物理内存
Grep筛选横向
Awd 筛选纵向
2、条件测试操作:
1、字符串比较:
格式1:
【字符串1 = 字符串2】
【字符串1 != 字符串2】
常用的测试操作符:
=:字符串内容相同。
!=:字符串内容不同,!号表示相反的意思。
-z:字符串内容为空。
‘ ’ “ ”都可以添加字符串,但是双引号可以引用变量
2、条件测试操作:
逻辑测试:
格式1:【 表达式1 】 操作符 【 表达式2 】
格式2:命令1 操作符 命令2
常用的测试操作符:
-a或&&:逻辑 与,“而且”的意思。
-o或||:逻辑 或,“或者”的意思。
!=:逻辑否。
[root@localhost~]#[ -d /etc ] && [ -r /etc ] && echo " you can open it "
[root@localhost~]#[ -d /etc ] || [ -d /home ] && echo "ok"
&&:前面的成立了才能够到后面运行
||:前面有一个成立就可以到后面运行
-a在中间不能够被识别,但是find -a 可以识别
[ ]里面只能够进行依次判断而不能够进行多次运算。
二、if语句的结构:
1、单分支结构:
2、双分支结构:
双分支if语句:
实例:判断目标主机是否存活,显示测试结果:
[root@localhost~]#cat pinghost.sh
#!/bin/bash
ping -c 3 -i 2 -w 3 $1 &> /dev/null $1:是IP地址占位符
if[ $? -eq 0 ]
then
echo "Host $1 is up"
else
echo "Host $1 is down"
fi
3、多分枝if语句:
多分支if语句:
判断分数范围,分出优秀、合格、不合格三档
[root@localhost~]# cat gratediv.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
4、case语句结构:
case多分支语句:
[root@localhost~]#cat hitkey.sh
#!/bin/bash
read -p "请输入一个字符,并按Enter键确认" KEY
case "$KEY"in
[ a-z ]|[ A-Z ])
echo "你输入的是字母!"
;;
[ 0-9 ])
echo "你输入的是数字"
;;
*)
echo "你输入的是 空格,功能键或者其他控制字符!"
esac
Echo $ [$RANDOM%10] : 0-9(取余10,10可以在除,故不包括10)
Echo $ [$RANDOM%10+1]:1-10