如何在shell脚本中将数组列表转换为逗号分隔的单个变量

时间:2019-02-10 17:15:15

标签: shell unix

我有一个如下所示的数组

data=(1,2,3,4,5)

${data[*]}

输出:

1 2 3 4 5

上面的输出像\ n

我只想使用for循环并将每个值附加在变量中,并以逗号分隔,如下所示:

testData=1,2,3,4,5

任何想法我都只能在shell脚本中使用FOR循环来实现。

2 个答案:

答案 0 :(得分:1)

如果您的输入确实是是一个数组,例如:

data=( 1 2 3 4 5 )

...将其转换为逗号分隔的值列表可能类似于:

testData=$(IFS=,; printf '%s\n' "${data[*]}")

...或者更着眼于效率:

printf -v testData '%s,' "${data[@]}"
testData=${testData%,}

其中一个之后

echo "$testData"

将发出:

1,2,3,4,5

答案 1 :(得分:0)

使用bash parameter transformationsubstitution

x=(1 2 3 4 5)  x=${x[@]@P}  x=${x// /,} ;  echo $x

输出:

1,2,3,4,5