Bashの区切り文字で文字列を分割するにはどうすればよいですか?
私はこの文字列を変数に格納しています: IN="bla@some.com;john@home.com" 次に、文字列を;区切り文字で分割して、次のようにします。 ADDR1="bla@some.com" ADDR2="john@home.com" ADDR1とADDR2変数は必ずしも必要ではありません。それらが配列の要素である場合は、さらに優れています。 以下の回答からの提案の後、私は次のようになりました: #!/usr/bin/env bash IN="bla@some.com;john@home.com" mails=$(echo $IN | tr ";" "\n") for addr in $mails do echo "> [$addr]" done 出力: > [bla@some.com] > [john@home.com] Internal_field_separator(IFS)をに設定することを含む解決策がありました;。その答えで何が起こったのかわかりませんが、どうやっIFSてデフォルトにリセットしますか? RE:IFS解決策、私はこれを試してみましたが、うまくいきました。古いものを保存してからIFS復元します。 IN="bla@some.com;john@home.com" OIFS=$IFS IFS=';' mails2=$IN for x in $mails2 do echo "> [$x]" done IFS=$OIFS ところで、私が試したとき mails2=($IN) ループで印刷するとき、最初の文字列のみを取得しました$IN。