shell语法----test命令与判断符号[]

逻辑运算符&&和||

1.&& 表示与,|| 表示或

2.二者具有短路原则:

expr1 && expr2 :当expr1为假时,直接忽略expr2

expr1 || expr2 :当expr1为真时,直接忽略expr2

3.表达式的exit code为0,表示真;为非0,表示假。(与C/C++中的定义相反)


test命令

在命令行中输入man test,可以查看test命令的用法

test命令用于判断文件类型,以及对变量作比较。

test命令用exit code 返回结果,而不是使用stdout。0表示真,非0表示假。

例如:

test 2 -lt 3    #为真,返回值为0
echo $?         #输出上个命令的返回值,输出0
test -e test.sh && echo "exist" || echo "Not exist"   
#若test.sh存在,则输出 exist
#若不存在,则输出Not exist

文件类型判断

命令格式:

tset -e filename    #判断文件是否存在

测试参数 代表含义
-e文件是否存在
-f是否为文件
-d是否为目录

文件权限判断

命令格式:

test -r filename # 判断文件是否可读
测试参数 代表含义
-r文件是否可读
-w文件是否可写
-x文件是否可执行
-s是否为非空文件

整数间的比较

命令格式:

test $a -eq $b    # a是否等于b
测试参数 代表含义
-eqa是否等于b
-nea是否不等于b
-gta是否大于b
-lta是否小于b
-gea是否大于等于b
-lea是否小于等于b

字符串比较

测试参数 代表含义

test -z STRING

判断STRING是否为空,如果为空,则返回true
test -n STRING判断STRING是否非空,如果非空,则返回true(-n可以省略)
test str1 == str2判断str1是否等于str2
test str1 != str2判断str1是否不等于str2

多重条件判定

命令格式:

test -r filename -a -x filename
测试参数 代表含义
-a两条件是否同时成立
-o两条件是否至少一个成立
!

取反。如test ! -x file,当file不可执行时,返回true

 


判断符号[]

[] 与 test 用法几乎一摸一样,更常用于if语句中。另外 [ [ ] ] 是 [ ] 的加强版,支持的特性更多。

例如:

[ 2 -lt 3] # 为真,返回值为0
echo $?    # 输出上个命令的返回值,输出 0

[-e test.sh] && echo "exist" || echo "Not exist"
# 若文件存在,则输出exist,否则输出Not exist

注意:

1.[ ] 内的每一项都要用空格隔开

2.中括号内的变量,最好用双引号括起来

3.中括号内的常数,最好用单或双引号括起来

例如:

name="ChaseAug"
[ $name == "chaseaug" ]  # 错误,等价于[ ChaseAug == "chaseaug" ]
[ "$name" == "chaseaug" ] # 正确

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值