Shell判断用户参数
条件测试语句能够测试特点的表达式是否成立
当条件成立时返回值为0
否则返回其他数值
测试语句格式:
[ 条件表达式 ] 两侧均应有一个空格
测试语句有:
文件测试
逻辑测试
整数值比较
字符串比较
文件测试:
[ 操作符 文件或目录名 ]
参数 |
作用 |
-d |
测试是否为目录 |
-e |
测试文件或目录是否存在 |
-f |
判断是否为文件 |
-r |
测试当前用户是否有权读 |
-w |
测试当前用户是否可写 |
-x |
测试当前用户是否可执行 |
实例:
[[email protected] ~]# [ -d /etc ] #判断是否为一个目录
[[email protected] ~]# echo $?
0
[[email protected] ~]# [ -f /etc/inittab ] #判断是否为一个文件
[[email protected] ~]# echo $?
0
[[email protected] ~]# [ -r /etc/inittab ] #判断当前用户是否可读
[[email protected] ~]# echo $?
0
[[email protected] ~]# [ -w /etc/inittab ] #判断当前用户是否可写
[[email protected] ~]# echo $?
0
[[email protected] ~]# [ -x /etc/inittab ] #判断当前用户是否可执行
[[email protected] ~]# echo $?
1
实例2:
[[email protected] ~]# [ -e /dev/cdrom ] && echo "Exist"
Exist
逻辑测试:
[ 表达式1 ] 操作符 [ 表达式2 ]
操作符 |
作用 |
&& |
逻辑的与,“而且”的意思 |
|| |
逻辑的或,“或者”的以上 |
! |
逻辑的否 |
实例1:
Root用户下:
[[email protected] ~]# [ $USER != root ] && echo "user"
[[email protected] ~]#
普通用户下:
[[email protected] ~]$ [ $USER != root ] && echo "user"
user
[[email protected] ~]$
实例2:
Root用户下:
[[email protected] ~]# [ $USER != root ] && echo "User" || echo "root"
root
[[email protected] ~]#
整数值比较:
[ 整数1 操作符 整数2 ]
操作符 |
作用 |
-eq |
判断是否等于 |
-gt |
判断是否大于 |
-lt |
判断是否小于 |
-le |
判断是否等于小于 |
-ge |
判断是否等于大于 |
实例1:
[[email protected] ~]# [ 10 -gt 10 ] #判断是否10大于10
[[email protected] ~]# echo $?
1 否
实例2:
[[email protected] ~]# [ 10 -eq 10 ] #判断10是否等于10
[[email protected] ~]# echo $?
0 是
实例3:
[[email protected] ~]# FreeMem=`free -m | grep cache: | awk ‘{print $3}‘`
[[email protected] ~]# echo $FreeMem
205
[[email protected] ~]# [ $FreeMem -lt 1024 ] && echo "内存不足"
内存不足
[[email protected] ~]#
字符串比较:
[ 字符串1 操作符 字符串2 ]
操作符 |
作用 |
= |
比较字符串内容是否相同 |
!= |
比较字符串内容是否不同 |
-z |
判断字符串内容是否为空 |
实例1:
[[email protected] ~]# [ -z $String ] #判断变量是否为空
[[email protected] ~]# echo $?
0
实例2:
[[email protected] ~]# [ $LANG != "en.US" ] && echo "Not en.US"
#判断系统语言是否为en.us
Not en.US