在 Fish shell 中,如何加入带有自定义分隔符的数组?

hug*_*omg 8 fish

我有一个数组,其元素可能包含空格:

set ASD "a" "b c" "d"
Run Code Online (Sandbox Code Playgroud)

如何将此数组转换为逗号分隔值的单个字符串?

# what I want:
"a,b c,d"
Run Code Online (Sandbox Code Playgroud)

到目前为止,我能得到的最接近的是将数组转换为字符串,然后替换所有空格。问题是这仅在数组元素本身不包含空格时才有效

(echo $ARR | tr ' ' ',')
Run Code Online (Sandbox Code Playgroud)

rid*_*ish 12

从 fish 2.3.0 开始,您可以使用string内置函数:

string join ',' $ASD
Run Code Online (Sandbox Code Playgroud)

此答案的其余部分适用于旧版本的鱼。

一种选择是使用变量级联:

echo -s ,$ASD
Run Code Online (Sandbox Code Playgroud)

这会在开头添加一个额外的逗号。如果要删除它,可以使用cut

echo -s ,$ASD | cut -b 2-
Run Code Online (Sandbox Code Playgroud)

为了完整起见,您也可以将其放在后面并使用sed

echo -s $ASD, | sed 's/,$//'
Run Code Online (Sandbox Code Playgroud)