test命令
- 测试表达式是否成立,若成立返回0,否则返回其他数值
格式1:test 条件表达式
格式2:[ 条件表达式 ]
文件测试
[ 操作符 文件或目录 ]
常用的测试操作符
- -d:测试是否为目录
- -e:测试目录或文件是否存在
- -f:测试是否为文件
- -r:测试当前用户是否有权限读取
- -w:测试当前用户是否有权限写入
- -x:测试当前用户是否有权限执行
[root@localhost ~]#[-d lmedialcdrom ]
[root@localhost ~]# echo $? //返回0表示条件成立
0
[root@localhost ~]# [ -d lmedialcdrom/Server ]
[root@localhost ~]# echo $? //返回1表示条件不成立
1
[root@localhost ~]#[-d lmedialcdrpm ] && echo "YES" //逻辑与,“而且”的意思
YES
整数值比较
[ 整数 操作符 整数2 ]
常用的测试操作符
- -eq:等于
- -ne:不等于
- -gt:大于
- -lt:小于
- -le:小于或等于
- -ge:大于等于
[root@localhost ~]# who | wc -l
7
[root@localhost ~]# [ $(who | wc -l) -gt 5 | && echo "Too many." //用户数是否>5
Too many.
[root@localhost ~]#[$(who | wc -l) -ge 10 | && echo ">= 10. //用户数是否>=10
[root@localhost ~]# FreecC=$(free -m | grep "Mem: ' | awk "{
print $6y}')
[root@localhost ~]#[$FreecC -lt 1024]&& echo ${
FreecC}MB //空闲内存是否<1024MB
275MB
字符串比较
- 格式1
格式1:[ 字符串1 = 字符串2 ]
[ 字符串1 != 字符串2 ]
格式2:[ -z 字符串 ]
常用的测试操作符
- =:字符串内容相同
- !=:字符串内容不同,!号表示相反的意思
- -z:字符串内容为空
[root@localhost ~]# echo $LANG
zh_CN.UTF-8
[root@localhost ~]# [ $LANG!="en.US" ] &&echo “Not en.US"
Not en.US
逻辑测试
格式1:[ 表达式1 ] 操作符 [ 表达式2 ]...
格式2:命令1 操作符 命令2 ...
常用的测试操作符
- -a或&&:逻辑与,“而且”的意思
- -c或||:逻辑或,“或者”的意思
- !:逻辑否
[root@localhost ~]#[-d letc ] &&[-r letc ] &&echo "You can open it"
[root@localhost ~]#【-d letc ] [ -d home ] &&echo "ok"
单分支结构
双分支结构
多分支结构
- 判断分数范围,分出优秀、合格、不合格三挡’
[root@localhost ~]# cat gradedlv.sh
read -p"请输入您的分数(O-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
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