Bash: '$(( ))' 意思是 'expr','[ ]' 意思是 'test'?

5

最近我一直在使用Bash脚本并查阅手册。从所了解到的内容来看,$(( ))表示expr,而[ ]则表示test

关于$(( ))

echo $(( 5 + 3 ))

与以下代码输出相同:

echo $(expr 5 + 3)

针对 [ ]

test 'str' = 'str'

与以下代码的成功返回值相同:

[ 'str' = 'str' ]

我理解正确吗?

2
您可能还要考虑使用 [[ ]],它可以让您进行模式匹配(等等),而单个 [ ] 则是 Bourne shell 语法。 - cdarke
谢谢提醒!有了大家的帮助,我已经弄清楚了!干杯! - Vern
$(( )) 不是 Bashism,它是符合 POSIX 标准的本地语法。expr 是上世纪70年代的古董。 - Charles Duffy
2个回答

9

非常感谢!还有链接也非常有用 :) - Vern

6

关于 [ ]test,你是正确的。

关于 $(( )),它是 expr 的更为复杂的替代品。你可以计算比 expr 更复杂的表达式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接