test命令
长格式的例子:
test "$A" == "$B" && echo "Strings are equal" test “$A” -eq “$B” && echo "Integers are equal"
而-eq是两个数字是否相等的意思。
简写格式的例子:
[ "$A" == "$B" ] && echo "Strings are equal"
[ "$A" -eq "$B" ] && echo "Integers are equal
-v 用来检测一个变量是否被设置过值,若设置过则$?返回0,没设置过值返回1.
数值测试:
–gt -ge -eq -ne -lt -le
这些数值测试可以是整数或负数,甚至算数表达式来比较。但不支持小数点。
test有一个专用的命令中括号
左中括号[ 是一个命令,空格加右中括号是它的参数
具体如下:
# [ A ==A ]
# echo $?
# 0
也就是[ A ==A ] 等于 test "$A" == "$A".
左右中括号与后面的参数之间必须有空格.
字符串测试
字符串测试:注意: 此表达式一般用于[[ ]]中;扩展的正则表达式
== 是否等于 示例: [[ a == b ]]中, a == b 与中括号之间都有空格.
> ascii码是否大于ascii码
< 是否小于
!= 是否不等于
=~ 左侧字符串是否能够被右侧的PATTERN所匹配 即 左侧字符串是否包含右侧的,包含为真,不包含为假.
注意:用于字符串比较时的用到的操作数都应该使用引号
-z "STRING“ 字符串是否为空,空为真,不空为假,举例 # A=123 # [ -z $A ] # echo $? # 1 -z是当变量有值的时候为假,没有被赋值的时候为真. -n "STRING“ 字符串是否不空,不空为真,空为假,举例 # A=123 # [ -z $A ] # echo $? # 0 -n是当变量有值的时候为真,没有被赋值的时候为假.
存在性测试
-a FILE:同-e FILE:
文件存在性测试,存在为真,否则为假
# [ -e /etc/passwd ]等于test -e /etc/passwda 等于test -a /etc/passwda # echo $? # 0
存在性及类别测试
-b FILE -c FILE -d FILE:// -f FILE -h FILE 或 -L FILE: -p FILE: -S FILE:
权限测试
文件权限测试:
-r FILE:// -w FILE: // -x FILE: // [ -r /app/passwd -o -w /app/passwd ] [ -r /app/passwd -a -w /app/passwd ]
文件特殊权限测试:
-u FILE: -g FILE: -k FILE:
文件大小测试:
-s FILE: -t fd: fd -N FILE: -O FILE: -G FILE:
双目测试:
FILE1 -ef FILE2: FILE1 -nt FILE2: FILE1 -ot FILE2:
多条件判断.并且,或者,非..
第一种方式:
COMMAND1 && COMMAND2 并且 &&等于 -a COMMAND1 || COMMAND2 或者 ||等于 -o ! COMMAND 非
如:
[[ -r FILE ]] && [[ -w FILE ]] 等于 [ -r /app/passwd -a -w /app/passwd ] [[ -r FILE ]] || [[ -w FILE ]] 等于 [ -r /app/passwd -o -w /app/passwd ]
第二种方式:
条件1 -a 条件2 并且
条件1 -o 条件2 或者
! EXPRESSION
必须使用测试命令进行,即test或[]