我正试图通过bash脚本中的ping获得成功和不成功的响应,但是到目前为止还没有。
我的代码看起来像这样......
ping_results=$(ping -c 4 -q google.com)
这在ping成功时有效,但如果我没有互联网连接并且我得到了结果
ping: unknown host google.com
它打印到控制台,我的脚本似乎退出。
我希望ping结果或错误都存储在ping_results变量中。
任何帮助将不胜感激。
答案 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成功) )。 退出代码存储在变量“$?”中。