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

この回答の残りの部分は、以前のバージョンの魚に適用されます。

1つのオプションは、変数接続を使用することです。

echo -s ,$ASD

これにより、先頭に追加のコンマが追加されます。削除するには、次のものを使用できますcut

echo -s ,$ASD | cut -b 2-

完全性のために、次のように入力して使用することもできますsed

echo -s $ASD, | sed 's/,$//'

答え2

printfandのpaste代わりにechoandを使用できますtr

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

AFAIKには、fish配列要素を連結する組み込みの方法はありません。

関連情報