パイプで区切られたシェル変数の内容を配列変数への入力として渡す方法

パイプで区切られたシェル変数の内容を配列変数への入力として渡す方法

次の変数のデータを動的配列として扱う際に問題があります。

variable_1='A|B|C|D' -> dynamic_array=(A B C D)

sedコマンドを使用して '|'を空白に置き換え、データをDynamic_arrayに渡す方法を試しました。

1行のコードでこれを行う方法はありますか?

ベストアンサー1

変更する必要はありませんIFSバッシュ4.4からスタート:

readarray -td '|' arr < <(printf '%s' "$var")
$ var='A|B|C|D'
$ readarray -td '|' arr < <(printf '%s' "$var")
$ echo "${arr[0]}"; echo "${arr[3]}"
A
D

バラよりhelp readarray説明する。

注:以前の提案(readarray -td '|' arr <<< "$var")は短いですが、Freddyが指摘したように、最後の配列要素に偽の改行文字を挿入します。

おすすめ記事