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

9

我正在编写一个bash脚本,需要获取以下命令的输出:

fpings=$(fping -c 1 -t 1 $ips | sort) 
fpings变量包含命令的输出,但实际命令的输出不会打印到shell中,但它仍然为每个ping的IP写入一行到shell中。
有一个开关(-q)可以抑制输出(我想要的部分),但没有任何开关可以抑制我不想要的部分。
如何在不打印到shell中的情况下获取fpings命令的结果?
2个回答

9

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

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

问题在于 fping 只输出到 stderr。因此,如果您删除 stderr... - Déjà vu

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

应该正常工作,大括号{}捕获所有内容,然后将输出和错误流重定向到输出流,并保存在变量中。


2
使用 fpings=$( (fping -c 1 -t 1 $ips | sort; ) 2>&1 ) 然后过滤掉错误是可行的。 - Filip Haglund

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接