在 Fish shell 中,如何使用自定义分隔符连接数组?

在 Fish shell 中,如何使用自定义分隔符连接数组?

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

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

您可以使用printfandpaste代替echoand tr

printf '%s\n' $ASD | paste -sd,

AFAIK,fish没有内置的方法来连接数组元素。

相关内容