Bash:'$(())'表示'expr'而'[]'表示'测试'?

时间:2012-05-23 10:53:33

标签: linux bash

我最近一直在使用一些bash脚本,并一直在浏览手册页。根据我收集的内容,$(( ))表示expr[ ]表示test

$(( ))

echo $(( 5 + 3 ))

的输出与:

相同
echo $(expr 5 + 3)

[ ]

test 'str' = 'str'

具有与以下相同的成功价值:

[ 'str' = 'str' ]

我的理解是否正确?

2 个答案:

答案 0 :(得分:9)

((...))构造等同于bash内置letletexpr完成的工作大致相同。

$((...))构造,请注意开头的$,将像$(...)那样替换表达式的输出。

[...]构造实际上只是test的另一个名称。

有关详细信息,请参阅bash帮助页面。

  • help "("
  • help let
  • help [
  • help test

另见:

答案 1 :(得分:6)

您对[ ]test

是正确的

关于$(( )),这是expr的更精细的替代品。您可以使用expr来计算更复杂的表达式。