TypechoJoeTheme

MetMan's Blog

网站页面

Shell退出状态和test命令(二)

MetMan博 主
2024-02-02
/
0 评论
/
148 阅读
/
305 个字
/
百度已收录
02/02
本文最后更新于 2024年02月02日,已超过 230天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

test命令

可执行的命令执行会有退出状态,如果想对文件属性/字符串比较/数值大小关系比较进行测试操作获得退出状态呢?

我们可以通过test命令进行以上测试。test命令执行结果是其参数比较的退出状态。

基本语法:

test 表达式

[ 表达式 ]

test命令的等价用法是[ ],一般我们都喜欢后一种用法。

几种常用的测试:

  • 文件属性测试
表达式测试为真
-d filefile是目录
-e filefile存在
-f filefile为一般文件

示例:

$ test -d TMP 
$ echo $?
0
$ [ -f foo ]
1
  • 字符串测试
表达式测试为真
-n stringstring是非null
-z stringstring是null
s1 = s2字符串s1与s2相同
s1 != s2字符串s1与s2不同

示例:

$ var=hello
$ test -n "$var" #字符串非空
$ echo $?
0
$ test -n "$var1" #空字符串
$ echo $?
1
$ test -z "$var1"
$ echo $?
0
  • 数字比较测试
表达式测试为真
n1 -eq n2整数n1等于n2
n1 -ne n2整数n1不等于n2
n1 -lt n2n1小于n2
n1 -le n2n1小于等于n2
n1 -gt n2n1大于n2
n1 -ge n2n1大于等于n2

示例:

$ test 1 -lt 10
$ echo $?
0

test运算符-a-o

不同于shell运算符&&||用于连接多个命令逻辑组合,-a-o是test运算符,用于连接test多个表达式。

$ test 1 -lt 10 -a -n "$var"
echo $?
1
$ [ 1 -lt 10 -o -n "$var" ]
$ echo $?
0

true和false命令

true命令退出状态永远为0,而false命令退出状态永远为1。

$ true; echo $?
0
$ false; echo $?
1

小结

  • Shell中condition是检查命令执行的退出状态。
  • test命令与[]等价,后一种用法更受欢迎。
shellbash
朗读
赞(0)
赞赏
感谢您的支持,我会继续努力哒!
版权属于:

MetMan's Blog

本文链接:

https://blog.metman.top/index.php/archives/84/(转载时请注明本文出处及文章链接)

评论 (0)

互动读者

标签云

最新回复

暂无回复

登录
X
用户名
密码