expr
stdout 为输出,1为真,0为假
test
exit 为输出, 0为真,1为假
test
用于判断文件类型,对变量进行比较,用exit code
返回值做结果,而不是stdout
输出
,做结果。用echo $?
输出上一条命令的返回值
test 2 -lt 3 //-lt :less than, 小于号
echo $? //返回上条命令的 exit code,0为真,1为假
文件类型判断
参数 | 说明 |
---|---|
-e | 文件是否存在 |
-f | 是否为文件 |
-d | 是否为目录 |
如
test -e rong.sh
echo $? //输出为0表文件存在,1表文件不存在
test -f rong.sh
echo $?
文件权限判断
参数 | 说明 |
---|---|
-r | 是否可读 |
-w | 是否可写 |
-x | 是否可执行 |
-s | 是否为空 |
vim a.sh //创建一个脚本
test -x a.sh //查询a.sh 是否可执行
echo $? //输出1
chmod +x a.sh //把a 变成可执行文件
test -x a.sh
echo $? //输出为0
整数间比较
参数 | 说明 |
---|---|
-eq | a是否等于b |
-nq | a是否不等于b |
-lt | a是否小于b |
-gt | a是否大于b |
-ge | a是否大于等于b |
-le | a是否小于等于b |
ge:greater than or equal
le:less than or equal
a=3
b=4
test $a -lt $b
echo $? //输出0
字符串比较
参数 | 说明 |
---|---|
-z | 字符串是否为空,空返回true,即0 |
-n | 字符串是否不空,不空返回true,即0 |
a==b | a,b是否相等, |
a!=b | a,b是否不等 |
a\<b | a是否<b |
a="rong"
b="yi"
test -z a
echo $? //返回0
test a==b && echo "true" || echo "false" //输出: false
多重条件判断
格式:test -r filename -a -x filename
是否可读也可执行
参数 | 意义 |
---|---|
-a | 两条件是否同时成立 |
-o | 两条件是否至少一个成立 |
! | 取反 |
ls // abc 不可执行的文件夹
test -x abc -a -r abc && echo "true" || echo "false" //输出false
test -x abc -o -r abc && echo "true" || echo "false" //输出true
test ! -x abc && echo "true" || echo "false" //输出true
判断符号 []
是个运算符号,用法同test
,每一项都要用空格隔开
用$
要加双引号,防止有空格而出错
ls //有不可执行的abc 文件
test -x abc && echo "true" || echo "false"
[ -x abc ] && echo "true" || echo "false" //输出false
[ 2 -lt 3 ]
echo $? //输出0
name="rong yi"
[ "$name" == "rong yi" ]
echo $? //输出0