最近我一直在使用Bash脚本并查阅手册。从所了解到的内容来看,$(( ))表示expr,而[ ]则表示test。 关于$(( )): echo $(( 5 + 3 )) 与以下代码输出相同: echo $(expr 5 + 3) 针对 [ ]: test 'str' = 'str' 与以下代码的成功返回值相同: [ 'str' = 'str' ] 我理解正确吗?
((...))结构等同于bash内置的let。 let基本上执行与expr相同的操作。 注意$((...))结构中开头的$,它将像$(...)一样替换表达式的输出。 [...]结构实际上只是test的另一个名称。 有关更多信息,请参阅bash帮助页面。 help "(" help let help [ help test 另请参阅: http://mywiki.wooledge.org/BashFAQ/031 http://mywiki.wooledge.org/ArithmeticExpression
$(( ))
不是 Bashism,它是符合 POSIX 标准的本地语法。expr
是上世纪70年代的古董。 - Charles Duffy