读取命令输出的 Shell 脚本

读取命令输出的 Shell 脚本

我正在编写一个脚本来监视网站上的一些内容,其中之一是监视 http 状态及其响应时间。

在脚本中,我运行一个命令来获取http_status:(http命令由以下提供:httpie:一个类似Curl的人类工具)

http -timeout 10 -follow -h http: //$I/ | grep "HTTP\/1.1" | awk '{print $2}'

该命令将返回状态本身,即:200、404、403 等,或者将返回另外两个内容:

http: error: Request timed out (10.0s)

或者

http: error: ConnectionError ..."

注意:增加超时并不能解决我的问题。我需要它是10秒。

返回这两个其他选项时如何输入特定代码?例如超时返回9999和错误8888

答案1

一个简单的case语句应该可以满足您的要求:

case "$(http_status)" in
    "case 1")
        return 199
        ;;
    "case 2")
        return 198
        ;;
    *)
        # All is well; do nothing
        ;;
esac

您可以使用通配符,例如*"timed out"*)*"ConnectionError"*)

相关内容