带逗号和单引号的Concat数组元素 - Bash

时间:2017-08-21 12:09:11

标签: arrays bash ifs

如何在Bash中使用单引号和逗号转换数组元素。

arr=("element1" "element2" "element3")
#element1 element2 element3

期望的结果 'element1','element2','element3'

Martin Clayton回答逗号分隔值是使用IFS

实现的
SAVE_IFS="$IFS"
IFS=","
ARRJOIN="${arr[*]}"
IFS="$SAVE_IFS"

echo "$ARRJOIN"
#element1,element2,element3

但是如何为每个元素添加单引号。

2 个答案:

答案 0 :(得分:4)

[akshay@localhost tmp]$ arr=("element1" "element2" "element3")
[akshay@localhost tmp]$ joined=$(printf ",'%s'" "${arr[@]}")
[akshay@localhost tmp]$ echo ${joined:1}
'element1','element2','element3'

答案 1 :(得分:1)

只需使用sed:

sed -E "s/([[:alnum:]]+)/'&'/g;s/ /,/g" <<< ${arr[@]}

第一个sed命令,用单引号括起所有字母数字字符串,在第二个命令上用逗号替换空格。