Shell test

测试表达式

Shell 中的测试表达式使用的是 test。

格式一

test 测试表达式

比如:

test -f file && echo 1 || echo 0

格式二

[ 测试表达式 ]

比如:

[ -f file ] && echo 1 || echo 0

格式三

[[ 测试表达式 ]]

比如:

[[ ! -f file ]] && echo 0 || echo 1

文件测试

文件测试操作符如下:

操作 说明
-f 文件 若文件存在且为普通文件则为真
-d 文件 若文件存在且为目录文件则为真
-s 文件 若文件存在则为真
-r 文件 若文件存在且可读则为真
-w 文件 若文件存在且可写则为真
-x 文件 若文件存在且可执行则为真
-L 文件 若文件存在且为链表文件则为真
f1 -nt f2 若文件 f1 比文件 f2 新则真
f1 -ot f2 若文件 f1 比文件 f2 旧则真

字符串测试

操作 说明
-z “字符串” 若串长度为 0 则真
-n “字符串” 若串长度为不为 0 则真
“串1”=“串2” 若串 1 等于串 2 则真,可以使用 “==” 代替 “=”
“串1”!=“串2” 若串 1 不等于串 2 则真

整数比较

在 [] 中使用的比较符 在 (()) 和 [[]] 中使用的比较符
-eq ==
-ne !=
-gt >
-ge >=
-lt <
-le <=

逻辑操作符

在 [] 中使用的比较符 在 (()) 和 [[]] 中使用的比较符
-a &&
-o ||
! !

[ -n “file1" ] && echo 1 || echo 0 #"file1” 双引号不能去。