bash 脚本中的命令和表达式之间有什么有意义的区别吗?另外,我知道(命令)打开一个新的子shell并运行命令,但我不知道当你有(表达式)时会发生什么。当您使用表达式而不是命令时会发生什么。
例如
[[ ( "$#" < 1 ) ]]
谢谢
答案1
[[ ( "$#" < 1 ) ]]
这是一个[[ ... ]]
测试,检查$#
位置参数的数量是否按1
字典顺序排序(使用-lt
代替 来<
执行算术“小于”测试)。
在 shell 的特殊[[ ... ]]
语法中bash
,括号不会引入子 shell,而是提供一种对表达式进行分组的方法,以便覆盖运算符的正常优先级。
手册中对此进行了解释bash
,其中描述了[[ ... ]]
语法:
[[ expression ]]
[...]
可以使用以下运算符组合表达式,按优先级降序列出:
( expression )
返回 的值expression
。这可用于覆盖运算符的正常优先级。
[...ETC...]