首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么上面的输出是2而不是6,而另一个是3?

为什么上面的输出是2而不是6,而另一个是3?
EN

Stack Overflow用户
提问于 2021-06-16 16:11:20
回答 1查看 54关注 0票数 0
代码语言:javascript
复制
lab=(jeff roger brian)
lab[3]=sean
lab=("${lab[*]}" "${lab[*]}")
echo ${#lab[*]}

echo $({lab*} > jeff jeff ${#lab*} >2 io=( iu *}) echo ${ io *} >io iu iu回显${#io*} > 3

EN

回答 1

Stack Overflow用户

发布于 2021-06-16 16:17:01

您看到了"${lab[*]}""${lab[@]}"之间的区别。

代码语言:javascript
复制
$ lab=(jeff roger brian)
$ lab2=("${lab[*]}" "${lab[@]}")
$ for x in "${lab2[@]}"; do echo "$x"; done
jeff roger brian
jeff
roger
brian

"${lab[*]}"是一个单词,由lab中的所有元素组成,由一个空格分隔。

"${lab[@]}"是一个单词序列,每个单词对应于lab的一个单独的元素。

上面lab2的定义由四个元素组成:从lab内容创建的单个单词,以及lab的三个单独元素中的每一个。

如果没有引用扩展(如在echo ${lab[*]}中),这种区别就会有些丧失,因为结果会立即受到分字的影响,因此echo会得到三个独立的参数。没有引号,${lab[*]}${lab[@]}本质上是相同的。

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

https://stackoverflow.com/questions/68006419

复制
相关文章

相似问题

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