【发布时间】:2020-03-16 09:25:59
【问题描述】:
如何控制数组分隔其元素的方式?如果你这样做:
echo ${array[*]}
它显示:
element1 element2 element3
我希望它是:
element1:element2:element3
【问题讨论】:
如何控制数组分隔其元素的方式?如果你这样做:
echo ${array[*]}
它显示:
element1 element2 element3
我希望它是:
element1:element2:element3
【问题讨论】:
元素由$IFS(内部字段分隔符)的第一个字符连接。
(IFS=':'; echo "${array[*]}")
修改$IFS 有很多副作用。我建议只在子shell 内短时间更改它,这样脚本的其余部分就不会受到影响。
【讨论】:
${array[*]} 周围的双引号是正常工作所必需的。没有它们,它将用冒号连接元素,然后立即重新拆分它们(基于冒号,因为这是在$IFS 中,并且单词拆分是未引用的变量引用所发生的事情)。重新拆分完全反转了连接操作(也可能拆分任何包含冒号的元素)。然后它将重新拆分的元素传递给echo,echo 重新加入它们,但这次有空格(因为echo 不注意$IFS)。总是双引号你的变量引用。