Bash脚本将命令的所有输出分配给变量

时间:2013-03-16 22:54:18

标签: bash

我正试图通过bash脚本中的ping获得成功和不成功的响应,但是到目前为止还没有。

我的代码看起来像这样......

ping_results=$(ping -c 4 -q google.com)

这在ping成功时有效,但如果我没有互联网连接并且我得到了结果

ping: unknown host google.com

它打印到控制台,我的脚本似乎退出。

我希望ping结果或错误都存储在ping_results变量中。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:6)

好的,你的问题的简单答案是将stderr重定向到stdout。正如Fredik Phil在评论中提到的那样。

而不是:

ping_results=$(ping -c 4 -q google.com);

使用:

 ping_results=$(ping -c 4 -q google.com 2>&1);

或类似的......

但是,根据您正在做的事情,最好测试ping命令的退出代码是否为1(表示ping是否以错误结束)或0(表示ping成功) )。 退出代码存储在变量“$?”中。