【问题标题】:bash script exiting when setting variable to curl output将变量设置为curl输出时退出bash脚本
【发布时间】:2019-06-13 02:58:58
【问题描述】:

尝试创建一个函数来检查网页上的 SSL 是否存在问题。在特定场景中,我们为 curl https://domain 设置了预期输出包括:

curl: (60) SSL certificate problem: self signed certificate

...我们正在使用 grep,按照下面的行将 SSL_STATUS 变量设置为该行,然后我们将通过 if 语句进行泵送。问题是它设置了变量,然后无缘无故退出了脚本:

+ https_status
++ curl https://steelrain.eu
++ grep 'SSL certificate problem'
+ SSL_STATUS='curl: (60) SSL certificate problem: self signed certificate'

经测试,这不是grep的结果,而是curl,我不知道为什么(使用SSL_STATUS=$( curl https://${DOMAIN}时仍然发生)这是基础)。

我可能只是不明白这里的某些东西是如何工作的,因为我很厚,但我们将不胜感激。

SSL_STATUS=$( curl https://${DOMAIN} 2>&1 | grep "SSL certificate problem" )

之前可能应该提到过,但是将函数设置为仅运行 curl 命令也会将其从脚本中删除,因此它不会将输出设置为导致问题的变量。

【问题讨论】:

  • 您的脚本中是否有set -e?如果任何命令返回非零退出代码(如出现证书问题时 curl 所做的那样),它将停止您的脚本。
  • 非常感谢。一位同事建议使用 set -euox pipefail 进行调试,这让整个事情都崩溃了。很高兴我花了几个小时重写函数的原因:) 再次感谢伙计

标签: bash function variables curl


【解决方案1】:

set -e 在主脚本中用于调试:

set -euox pipefail

已注释掉,现在已排序。干杯!

【讨论】:

    猜你喜欢
    • 2020-11-14
    • 2021-11-11
    • 2020-12-19
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    相关资源
    最近更新 更多