Bash:如何用制表符分隔数组元素-并在同一行上打印?

时间:2019-01-29 10:39:28

标签: arrays linux bash

我在bash中有一个数组...例如my_array:

my_array={1,2,3,4}

我需要两个要求: 1)将所有这些元素打印在同一行上,然后2)用制表符分隔每个元素。

当我打印出元素时,输出应该是这样:

1    2    3    4

元素之间的每个“空白”都是一个制表符。

任何有关如何执行此操作的建议将不胜感激。谢谢。

编辑 到目前为止,这是我尝试过的:

1)我知道我可以在同一行上打印出一个数组:

echo {my_array[*]}

2)为了获得所需的选项卡,我尝试制作一个仅带有选项卡的变量,然后将其添加到每个元素之间的数组中:

temp="    "

for(...)
do
    ((my_array+=$i))
    ((my_array+=$temp))
done

但是,这给了我一个错误。

编辑2 伊南提供的解决方案

这有效:

printf '%s\t' "${my_array[@]}"

但是,这里有几件事;在最后一个元素之后,如何删除最后一个标签?

1 个答案:

答案 0 :(得分:0)

为什么不使用“ tr”?

my_array={1,2,3,4}
echo $my_array | tr "," "\t"

结果:

{1      2       3       4}

如果:

my_array=(1,2,3,4)
echo $my_array | tr "," "\t"

结果:

1       2       3       4