bash - 在新行输出每个数组元素
bash - output each array element on new line
我正在尝试从我在循环内构建的数组创建 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
放在我插入数组的每个字符串的末尾,但它没有用。知道我做错了什么吗?谢谢
要附加到数组,您应该使用以下语法:
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
注意 printf
中 %b
的使用,以便正确解释转义序列。
输出:
cat test.tsv
col_1 col_2 col_3
bla tra meh
bla tra meh
bla tra meh
我正在尝试从我在循环内构建的数组创建 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
放在我插入数组的每个字符串的末尾,但它没有用。知道我做错了什么吗?谢谢
要附加到数组,您应该使用以下语法:
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
注意 printf
中 %b
的使用,以便正确解释转义序列。
输出:
cat test.tsv
col_1 col_2 col_3
bla tra meh
bla tra meh
bla tra meh