数组中的分隔符 Bash/Shell

24 浏览
0 Comments

数组中的分隔符 Bash/Shell

如何控制数组分隔其元素的方式?如果执行以下命令:

echo ${array[*]}

它会显示:

element1 element2 element3

我希望它显示为:

element1:element2:element3

0
0 Comments

在Bash/Shell中,数组的元素通过$IFS(内部字段分隔符)的第一个字符进行连接。

(IFS=':'; echo "${array[*]}")

修改$IFS会带来许多副作用。我建议只在子shell内的短时间内更改它,以免影响脚本的其他部分。

需要注意的是,${array[*]}周围的双引号是必需的,以使其正常工作。如果没有双引号,它将使用冒号连接元素,然后立即重新拆分它们(基于冒号,因为它在$IFS中,并且未引用的变量引用会进行词分割)。重新拆分完全颠倒了连接操作(并且可能还会拆分包含冒号的任何元素)。然后将重新拆分的元素传递给echo,它会重新连接它们,但这次是用空格(因为echo不关注$IFS)。始终对变量引用使用双引号。

0