bash脚本中的(表达式)和​​(命令)有什么区别

bash脚本中的(表达式)和​​(命令)有什么区别

bash 脚本中的命令和表达式之间有什么有意义的区别吗?另外,我知道(命令)打开一个新的子shell并运行命令,但我不知道当你有(表达式)时会发生什么。当您使用表达式而不是命令时会发生什么。

例如

[[ ( "$#" < 1 ) ]] 

谢谢

答案1

[[ ( "$#" < 1 ) ]] 

这是一个[[ ... ]]测试,检查$#位置参数的数量是否按1字典顺序排序(使用-lt代替 来< 执行算术“小于”测试)。

在 shell 的特殊[[ ... ]]语法中bash,括号不会引入子 shell,而是提供一种对表达式进行分组的方法,以便覆盖运算符的正常优先级。

手册中对此进行了解释bash,其中描述了[[ ... ]]语法:

[[ expression ]]

[...]

可以使用以下运算符组合表达式,按优先级降序列出:

( expression )
返回 的值expression。这可用于覆盖运算符的正常优先级。
[...ETC...]

相关内容