スペースで区切られた入力フィールドの読み取り

スペースで区切られた入力フィールドの読み取り

次のようにPOSIX入力をどのように読みますかbash

<name>,<tag1> <tag2> <tag3>…

試してみましたが、 while read line;do done改行が必要で、私が持っているのは空白だけです。

(はいIFS解決策?それではどうですか? (IFSを完全に理解していません。)

答え1

配列を使用して下さい:

echo '<name>,<tag1> <tag2> <tag3>' | while IFS=" ," read -a foo; do echo ${foo[@]}; done

出力:

<name> <tag1> <tag2> <tag3>

からman bash

IFS:拡張後の単語分割と読み込み組み込みコマンドを使用して行を単語に分割するために使用される内部フィールド区切り文字。

関連情報