我有一个数组,其元素可能包含空格:
set ASD "a" "b c" "d"
如何将此数组转换为逗号分隔值的单个字符串?
# what I want:
"a,b c,d"
到目前为止,我能得到的最接近的是将数组转换为字符串,然后替换所有空格。问题是,只有当数组元素本身不包含空格时,这才有效
(echo $ARR | tr ' ' ',')
答案1
从 Fish 2.3.0 开始,您可以使用string
内置函数:
string join ',' $ASD
这个答案的其余部分适用于旧版本的鱼。
一种选择是使用变量串联:
echo -s ,$ASD
这会在开头添加一个额外的逗号。如果你想删除它,你可以使用cut
:
echo -s ,$ASD | cut -b 2-
为了完整起见,您还可以将其放在并使用sed
:
echo -s $ASD, | sed 's/,$//'
答案2
您可以使用printf
andpaste
代替echo
and tr
:
printf '%s\n' $ASD | paste -sd,
AFAIK,fish
没有内置的方法来连接数组元素。