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

Ver*_*ern 5 linux bash

我最近一直在使用一些bash脚本,并一直在查看手册页.从我收集到的,是什么$(( ))意思expr[ ]意思test

用于$(( )):

echo $(( 5 + 3 ))
Run Code Online (Sandbox Code Playgroud)

具有相同的输出:

echo $(expr 5 + 3)
Run Code Online (Sandbox Code Playgroud)

用于[ ]:

test 'str' = 'str'
Run Code Online (Sandbox Code Playgroud)

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

[ 'str' = 'str' ]
Run Code Online (Sandbox Code Playgroud)

我理解得对吗?

les*_*ana 9

((...))构造等同于bash内置let.let大多数情况与此相同expr.

$((...))结构,注意$刚开始时,将取代表达的输出里面就像$(...)做.

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

有关更多信息,请参阅bash帮助页面.

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

也可以看看:


mou*_*iel 6

你是正确的[ ]test

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