整数1 -gt 整数2 判断整数1是否大于整数2(大于为真)
整数1 -lt 整数2 判断整数1是否小宇整数2(小于为真)
整数1 -ge 整数2 判断整数1是否大于等于整数2(大于等于为真)
整数1 -le 整数2 判断整数1是否小于等于整数2(小于等于为真)
-z 判断字符串是否为空(为空返回真)
-n 判断字符串是否非空(非空返回真)
字符串1 == 字符串2 判断字符号1是否和字符串2相等(相等返回真)
字符号1!=字符串2 判断字符串1是否和字符串2不等(不等返回真)
判断1 -a 判断2 逻辑与,判断1和判断2都成立,最终的结果才为真
判断1 -o 判断2 逻辑或,判断1和判断2有一个成立,最终结果为真
! 判断 逻辑非,使原始的判断式取反
例:
aa=22
[ -n "$aa" -a "$aa" -gt 23 ] && echo yes || echo no
#判断aa是否有值,同时判断aa是否大于23
#因为变量aa的值不大于23,所以虽然第一个判断值为真,返回的结果也是假
流程控制
if [条件判断式]; then
程序
fi
或
if [条件判断式]
then
程序
fi
单分支条件语句需要注意几个点
if语句使用fi结尾,和一般语言使用大括号结尾不同
[条件判断式] 就是使用test命令判断,所以中括号和条件判断式之间必须有空格
then后面除符合条件之后执行的程序,可以放在[]之后,用“;”分割。也可以换行写入,就不需要“;”了
例:判断分区使用率
#!/bin/bash
diska=$(df -h | grep "/dev/sda3" | awk ‘{print $5}‘ | cut -d "%" -f1)
#把根分区使用率作为变量值赋予变量disk
if [ $diska -ge 80 ]
#判断变量diska是否大于80(大于等于为真)
then
echo "硬盘 /dev/sda3 剩余空间不足%20"
df -h | grep "/dev/sda3"
fi
if [ 条件判断式 ]
then
条件成立时,执行的程序
else
条件不成立时,执行的另一个程序
fi
例:
#!/bin/bash
#mysql备份
#由于实验环境无mysql,则mysql路径/var/lib/mysql以/root代替
date=$(date +%y%m%d)
#把当前系统时间按年月日的格式赋予变量date
size=$(du -sh /root)
#统计MySQL大小并赋予变量size
if [ -d /tmp/backup ]
then
echo "$date" > /tmp/backup/backup-time.txt
echo "$size" >> /tmp/backup/backup-time.txt
cd /tmp/backup
tar czvf mysql-lib-$date.tar.gz /root backup-time.txt&>/dev/null
rm -rf backup-time.txt
else
mkdir /tmp/backup
echo "$date" > /tmp/backup/backup-time.txt
echo "$size" >> /tmp/backup/backup-time.txt
cd /tmp/backup
tar czvf mysql-lib-$date.tar.gz /root backup-time.txt&>/dev/null
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-86197-3.html
来宣示霸权的美国军舰
韦德只是比俺们厂子工资高许多
美国现役主战舰艇