文字列の各単語に連続して変数を割り当てる方法を提案しますか?
私は短いコマンドを探しています。可能であれば1行でループはありません。形でなければなりません
echo "<sring>" | your_command
はい:
- 文字列は「word1 word2 word3」です。
- 、
w1
に、およびに変数を割り当てたいです。word1
w2
word2
w3
word3
答え1
これは機能しますが、サブシェルで実行されるためksh93
機能しません。bash
bash
read
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"