Shell编程之条件语句
一、条件测试操作
1.1 test命令
●测试表达式是否成立,若成立返回0,否则返回其他数值(返回的是布尔值)
使用test命令测试时,有两种形式:(常用格式二)
格式1: test 条件表达式
格式2: [ 条件表达式 ] #在条件表达式两边都至少应有一个空格
#方括号两边与条件表达式之间需要至少一个空格进行分隔
1.2 文件测试
●根据给的路径名称,判断对应的是文件还是目录,或者判断是否有相应的权限等。
[ 操作符文件或目录 ]
常用的测试操作符
●-d:测试是否为目录(Directory)
●-e:测试目录或文件是否存在(Exist)
●-f:测试是否为文件(File)
●-r:测试当前用户是否有权限读取(Read)
●-w:测试当前用户是否有权限写入(Write)
●-x:测试当前用户是否有权限执行(eXcute)
实例:
[root@localhost ~]# [ -d /root/ee ] && echo “YES”
YES
注:&& (逻辑与,“而且”的意思):在前边的命令执行成功了再执行下边的语句(比if语句执行的效率更高)
1.3 整数值比较
●用于比较两个整数值的大小。
[ 整数1 操作符 整数2 ]
常用的测试操作符
●-eq:等于(Equal)
●-ne:不等于(Not Equal)
●-gt:大于(Greater Than)
●-It: 小于(Lesser Than)
●-le:小于或等于(Lesser or Equal)
●-ge:大于或等于(Greater or Equal)
实例:
[root@localhost ~]# who | wc -l
3
[root@localhost ~]# [ $(who | wc -I) -ge 3 ] && echo “Too many.” #用户数是否>=3,是的话,显示 too many
Too many
[root@localhost ~]# abc=$(free -m | grep "Mem: " | awk ‘{print $4}’)
[root@localhost ~]# [ $abc -gt 1024] && echo ${FreeCC}MB # 空闲内存是否>1024MB
1176MB
注:free 查看内存的命令 free -m 把单位换算成M
#计算内存使用率
[ root@local host~]#abc=free-m | grep “Mem:” | awk ‘{print $3/$2*100}’
[ root@local host~]#echo ${abc}%
1.4浮点算法
1.4.1 浮点算法 bc
bash不支持浮点运算,如果需要进行浮点运算,需要借助bc,awk处理。
#加
echo=$(echo "4.3+2. 5" | bc)
#减
echo=$(echo "4.3-2. 5" |bc)
#乘
echo=$(echo "4.30*2.50" |bc)
#除
echo "scale=2; 4.3