bash - 在新行上输出每个数组元素

时间:2017-02-17 15:10:04

标签: arrays bash export

我正在尝试从我在循环中构建的数组创建TSV文件。我确实让每一行的值都以制表符分隔,但我无法在新行上导出数组的每个元素。这是一个例子:

OUTPUT=()
#header
OUTPUT+=$(printf "col_1\tcol_2\tcol_3")

param_1="bla"
param_2="tra"
param_3="meh"

for i in 1 .. 3
  do
    OUTPUT+=$(printf "$param_1\t$param_2\t$param_3")
done
#export
printf '%s\n' "${OUTPUT[@]}" > test.tsv

我还尝试将\n放在我在数组中插入的每个字符串的末尾,但它不起作用。知道我做错了什么吗?谢谢

1 个答案:

答案 0 :(得分:2)

要附加到数组,您应该使用以下语法:

array+=(content)

此外,无需使用printf附加静态文本。

这是一个工作脚本:

OUTPUT=()
#header
OUTPUT+=("col_1\tcol_2\tcol_3")

param_1="bla"
param_2="tra"
param_3="meh"

for i in {1..3}
do
    OUTPUT+=("$param_1\t$param_2\t$param_3")
done
#export
printf '%b\n' "${OUTPUT[@]}" > test.tsv

请注意在%b中使用printf,以便正确解释转义序列。

<强>输出:

cat test.tsv

col_1   col_2   col_3
bla     tra     meh
bla     tra     meh
bla     tra     meh