我是bash-scripting的新手&试图理解事物是如何工作的。这一切都有点奇怪..。
可以将以下内容放入脚本中或输入到shell中:
declare -a A=("foo" "bar")
B=1
[ ${A[B]} == ${A[$B]} ] && echo "wTF" || echo ";)"这在我的debian上给了我"wTF“&在cygwin 1.7.11-1上也是如此。
所以。为什么${A[B]}可以工作?
发布于 2012-03-19 09:02:48
来自the , §6.7 "Arrays"
使用整数(包括算术表达式…)引用
索引数组和从零开始;…?下标被视为算术表达式,必须计算为大于或等于零的数字。
因此,实际上,${A[B]}就是${A[$((B))]}。当您需要像${A[B-1]}这样的东西时,这是很方便的。
算术表达式在§6.5 "Shell Arithmetic"中进行了解释,其中包含以下内容:
在表达式中,也可以按名称引用外壳变量,而无需使用参数扩展语法。
因此,$((B))的意思是$(($B)) (除了前者在某些方面更聪明,例如使用0而不是空白作为未初始化变量的默认值)。
发布于 2012-03-19 08:58:16
出于同样的原因,A可以工作:parameter expansion和substitution
https://stackoverflow.com/questions/9763743
复制相似问题