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
发布于 2021-06-16 16:17:01
您看到了"${lab[*]}"和"${lab[@]}"之间的区别。
$ 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[@]}本质上是相同的。
https://stackoverflow.com/questions/68006419
复制相似问题