将输出流转换为变量流

将输出流转换为变量流

我有两个针对两个不同系统运行的查询。它们每个都返回一行,我想将它们输出在一行上。

如果查询产生类似于以下内容的结果:

echo this that and more
echo other great news

我希望能够进行一些重新排序和格式化,如下所示:

echo other this that great news and more 

如果我能弄清楚如何将行的输出回显到多个变量中,我会很好。我让这个工作:

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 版本)没有bash.就是read调用了两次。

第二次会失败并让你脱离循环。

由于那一秒read没有读取任何内容,因此它将 a、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"

相关内容