出力ストリームを可変ストリームに変換

出力ストリームを可変ストリームに変換

2つの異なるシステムに対して2つのクエリが実行されています。それらはそれぞれ1行を返し、1行で出力したいと思います。

クエリの結果が次のようになります。

echo this that and more
echo other great news

次のように並べ替えと書式を設定できるようにしたいです。

echo other this that great news and more 

1行の出力を複数の変数に反映する方法を見つけることができれば良いでしょう。私はこれを働かせました:

echo this that and more | while IFS=" ", read a b c
do
  echo a=$a b=$b c=$c
done 

しかし、while ループを終了すると、変数 ab と c は範囲外になり、もはやその値を持ちません。

答え1

彼らではない範囲外ksh(少なくともAT&Tバージョンでは)2回呼び出されbashません。read

2番目の試みは失敗し、ループから抜け出します。

その瞬間には何も読み取られなかったので、reada、b、cを空の文字列に設定します。

ただし:

echo this that and more | IFS=" " read a b c
echo "a=$a b=$b c=$c"

答え2

a=$(echo this...)
b=$(echo other...)
echo -- "$a $b"

関連情報