shell-test判断

一、条件判断参数详解

对于test和[](中括号)判断语句来说,判断结果为真,则退出值为0,即echo $?为0 ,即返回为true,其他为false

1、关于文件名(文件类型)的判断

-e 该[文件名]是否存在 文件和目录都会返回为真
-f 该[文件名]是否存在并且为文件(file)
-d 该[文件名]是否存在并且为目录(directory)

2、关于文件权限的检测

-r 检测该[文件名]是否存在且具有[可读]的权限
-w 检测该[文件名]是否存在且具有[可写]的权限
-x 检测该[文件名]是否存在且具有[可执行]的权限
-u 检测该[文件名]是否存在且具有[SUID]的属性
-g 检测该[文件名]是否存在且具有[SGID]的属性

3、两个文件之间的比较 test file1 -nt file2

-nt 判断file1是否比file2新
-ot 判断file1是否比file2旧

4、关于两个整数之间的判断 test n1 -eq n2

-eq 两数值相等
-ne 两数值不相等
-gt n1大于n2
-lt n1小于n2
-ge n1大于等于n2
-le n1小于等于n2

5、判断字符串的数据

test -z string 判断字符串是否为零,若是空字符串则返回true
yy=
yy=‘’
yy=“”
yy=’ ’
yy=’ ’
yy=" "
yy=" "
这些都是空字符串
test -n string 判断字符串是否为零,若是空字符串则返回false
test str1==str2 判断两个字符串是否相等,如果相等则返回true
test str1==str2 判断两个字符串是否不相等,如果相等则返回false

6、多重条件判断

-a and(同时成立) test -f filename -a -x filename
-o or(只需要一个成立即可) test -f filename -o -x filename
-! 非

二、注意点

1、test 判断语句,如果成功,退出码为0

例如

m=2
n=1
test $m -gt $n
#输出为0  0为真,为true 其他为false
echo $?  

2、常见使用场景

test -e filename && echo "file exists" || echo "file not exists"

文件存在则输出file exists,文件不存在则输出file not exists

3、使用中括号进行判断

例如:

m=2
n=1
[ "$m" -gt "$n" ] ; echo $?

在使用中括号的时候需要注意前后需要有空格,并且对于参数的引用需要加上双引号,否则会报错,比如

[ "$m" -gt "$n" ] ; echo $?
#或者
[ "${m}" -gt "${n}" ] ; echo $?

name="lichf hhh"
[ $name == "lichf" ]  
会报too many arguments ,因为解析之后会变成 [ lichf hhh == "lichf" ],所以需要用双引号括起来[ "$name" == "lichf" ]

4、if判断语句思考

if 0 ;then
    echo "yes"
fi
if 1 ;then
    echo "yes"
fi

上述语句是会报错的

if true ;then
    echo "yes"
fi
if false ;then
    echo "no"
fi

上述语句是成功的

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值