首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash-为数组编写脚本

Bash-为数组编写脚本
EN

Stack Overflow用户
提问于 2012-03-19 08:53:24
回答 2查看 136关注 0票数 2

我是bash-scripting的新手&试图理解事物是如何工作的。这一切都有点奇怪..。

可以将以下内容放入脚本中或输入到shell中:

代码语言:javascript
复制
declare -a A=("foo" "bar")
B=1
[ ${A[B]} == ${A[$B]} ] && echo "wTF" || echo ";)"

这在我的debian上给了我"wTF“&在cygwin 1.7.11-1上也是如此。

所以。为什么${A[B]}可以工作?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-19 09:02:48

来自the , §6.7 "Arrays"

使用整数(包括算术表达式…)引用

索引数组和从零开始;…?下标被视为算术表达式,必须计算为大于或等于零的数字。

因此,实际上,${A[B]}就是${A[$((B))]}。当您需要像${A[B-1]}这样的东西时,这是很方便的。

算术表达式在§6.5 "Shell Arithmetic"中进行了解释,其中包含以下内容:

在表达式中,也可以按名称引用外壳变量,而无需使用参数扩展语法。

因此,$((B))的意思是$(($B)) (除了前者在某些方面更聪明,例如使用0而不是空白作为未初始化变量的默认值)。

票数 4
EN

Stack Overflow用户

发布于 2012-03-19 08:58:16

出于同样的原因,A可以工作:parameter expansionsubstitution

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9763743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档