shell – 你什么时候使用(())或/usr/bin/test
我看过使用测试命令和[]或[[]]的脚本。但是我们何时需要使用/ usr / bin / test和(())?
有什么场合,当我们需要为后者? 问候,
回答你的问题:
>当你不信任你正在使用的shell的测试内置函数,或者当你需要测试某些东西,但是不想为它调用一个shell时,你想使用/ usr / bin / test。 现在有一些背景: POSIX标准要求命令/ usr / bin / test。 POSIX还要求[被定义为测试的别名。测试和[所需的最终参数为a]之间的唯一区别。 由于在shell脚本中经常使用测试,大多数shell都有一个内置版本的test(和[])。内置版本的优点是它消除了shell和test可执行文件之间的context switches。 我认为在大多数情况下,无论使用系统测试还是使用shell的内置测试(除了内建的性能优势),都是安全的。 (())和[[]]由bash(也许一些其他的shell)引入为syntactic sugar.(())计算算术表达式,而[[]]评估逻辑表达式。两者都允许您使用“更自然的语法”来编写表达式。 决定使用[[或[取决于是否要使用“更自然的语法”,而且,由于sh不支持[[,是否要依赖于bash]。 使用(())的决定取决于您是否需要算术表达式,而且由于sh不支持(()),您是否要依赖于bash。 (())的POSIX替代是$(())。请注意,行为有一些微妙的差异。 以下链接详细介绍了这些主题: > http://mywiki.wooledge.org/BashFAQ/031(测试之间的差异,[和[[] 也可以看看: > POSIX definition of 奖金:一些debian开发人员曾经认为是否应该使用系统测试或者shell内置测试,因为内置测试的实现有一些差异。如果您对系统测试和shell内建测试的不同之处感兴趣,那么您可以在这里阅读debian开发者讨论:http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=267142。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |