1

我试图从 bash 脚本中的 ping 中获得成功和不成功的响应,但到目前为止还无法做到。

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

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

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

ping: unknown host google.com

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

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

任何帮助将不胜感激。

4

1 回答 1

8

好的,您的问题的简单答案是将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 成功)。退出代码存储在变量“$?”中。

于 2013-03-16T23:19:25.467 回答