文字列の各単語に変数を割り当てる方法

文字列の各単語に変数を割り当てる方法

文字列の各単語に連続して変数を割り当てる方法を提案しますか?

私は短いコマンドを探しています。可能であれば1行でループはありません。形でなければなりません

echo "<sring>"  | your_command

はい:

  • 文字列は「word1 word2 word3」です。
  • w1に、およびに変数を割り当てたいです。word1w2word2w3word3

答え1

これは機能しますが、サブシェルで実行されるためksh93機能しません。bashbashread

echo "word1 word2 word3" | read w1 w2 w3
printf '"%s"\n' "$w1" "$w2" "$w3"

つまり、できないパイプラインの一部として割り当てがありますbash

回避策は、サブシェルをパイピングする前に変数を使用することです。

echo "word1 word2 word3" | { read w1 w2 w3 && printf '"%s"\n' "$w1" "$w2" "$w3"; }

または、

echo "word1 word2 word3" | {
  read w1 w2 w3
  printf '"%s"\n' "$w1" "$w2" "$w3"
}

これは両方のシェルで機能します。

read w1 w2 w3 <<<"word1 word2 word3"
printf '"%s"\n' "$w1" "$w2" "$w3"

関連情報