Fish

在 Fish shell 中,如何加入帶有自定義分隔符的數組?

  • June 22, 2020

我有一個數組,其元素可能包含空格:

set ASD "a" "b c" "d"

如何將此數組轉換為逗號分隔值的單個字元串?

# what I want:
"a,b c,d"

到目前為止,我能得到的最接近的是將數組轉換為字元串,然後替換所有空格。問題是這僅在數組元素本身不包含空格時才有效

(echo $ARR | tr ' ' ',')

從 fish 2.3.0 開始,您可以使用string內置:

string join ',' $ASD

這個答案的其餘部分適用於舊版本的魚。

一種選擇是使用變數連接:

echo -s ,$ASD

這會在開頭添加一個額外的逗號。如果要刪除它,可以使用cut

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

為了完整起見,您也可以將其放在後面並使用sed

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

您可以使用printfandpaste代替echoand tr

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

AFAIK,fish沒有用於連接數組元素的內置方法。

引用自:https://unix.stackexchange.com/questions/205299