【发布时间】:2018-04-03 17:56:01
【问题描述】:
我正在编写一些 bash 脚本,并且想知道在 bash 脚本中运行命令时如何识别空输出或特定字符串输出。
示例 - 如果我对 google.com 执行 ping 操作,但由于没有连接,我收到消息“没有到主机的路由”,我希望程序回显“您已经完成了 boo boo”。
我尝试过的:
if [[ "$(ping -c 1 -n -q $address | grep -q 'ping: sendto: No route to
host')" > /dev/null ]];
then echo " Your server is up and working, please proceed to the next
step"
elif [-n "$(ping -c 1 -n -q $address | grep -q 'ping: sendto: No route
to host')" == *java* ];
then echo "Your server is down, please fix this issue"
else
echo "No response"
fi
另外,查看了实现此目的的其他方法,但找不到可行的解决方案。
【问题讨论】:
-
管道将一个程序的标准输出连接到下一个程序的标准输入。错误消息不在标准输出上,它们在标准错误上。
-
顺便说一句,我真的建议使用
ip route命令而不是ping来测试配置错误的情况。现在,如果 OP 使用非英语的语言环境/翻译设置运行代码,您的代码将失败。 -
你也可以这样
if (nc -z google.com 80) then echo "working" else echo "not working" fi -
@yausername 这似乎有效,谢谢 :))
-
if nc -z google.com 80; then ...是上述版本的无意义低效版本。
标签: bash