将命令输出保存到变量而不打印到标准输出

时间:2013-07-11 21:25:42

标签: linux bash

我正在做一个bash脚本,我正在抓取这个命令的输出:

fpings=$(fping -c 1 -t 1 $ips | sort) 

fpings变量确实包含命令的输出,并且命令的实际输出不会打印到shell,但它仍会为每个被ping的ip写一行到shell。

有一个开关(-q)来抑制输出(我想要的部分)但不能抑制我不想要的部分。

如果没有将内容打印到shell中,如何从fpings命令获取结果?

2 个答案:

答案 0 :(得分:7)

如果您不想看到标准错误,请将其重定向到/dev/null

fpings=$(fping -c 1 -t 1 $ips 2>/dev/null | sort) 

答案 1 :(得分:2)

fpings=$( {fping -c 1 -t 1 $ips | sort; } 2>&1 )

应该工作{}捕获所有内容然后它将两个流(out和err)重定向到刚出来并保存在变量中