我制作了一个小 bash 脚本来使用 cURL 监视一些网站和邮件服务器。
我会检查 HTTP 状态代码和退出代码。但我还想包含来自 cURL 的实际错误消息。无法弄清楚如何将它们组合在一起。
以下代码是我目前拥有的:
RESPONSE=$(curl --location --head --silent --output /dev/null --write-out '%{response_code}' nohosthere.com ; echo " $?")
R=( $RESPONSE )
CODE="${R[0]}"
EXIT="${R[1]}"
if [ $CODE -eq 200 ]; then
echo 'Ok'
else
echo "Response: ${RESPONSE}"
echo "Code: ${CODE}"
echo "Exit: ${EXIT}"
#echo "MESSAGE I WANT HERE curl: (6) Could not resolve host: nohosthere.com"
fi
当我添加--显示错误是直接打印出来的。我可以将其重定向到文件或存储空间,但不知道将所有内容放在一起。
我知道 --write_out 有类似的东西%{错误消息}和%{退出代码}但两者在我的测试系统 (macOS 10.15) 和我的 AWS Lightsail 服务器上均不可用。
答案1
为什么不直接RESPONSE=$(...)
(最后没有echo $?
),然后EXIT=$?
?
您不需要为此使用数组 -$RESPONSE
将包含 的输出curl
并将$EXIT
包含退出代码。