【发布时间】:2021-06-25 05:22:21
【问题描述】:
我正在使用 TLS 阅读 Elastic Stack on Docker 上的 elasticsearch 文档。
我在运行状况检查块中遇到了这一行:
curl --cacert $CERT_PATH/ca/ca.crt -s https://localhost:9200 >/dev/null
if [[ $$? == 52 ]]; then
echo 0
else
echo 1
fi
脚本使用指定目录下的CA证书来验证对等体。
我知道$? 是最近的前台管道的退出状态(在这种情况下是卷曲)。我的问题是为什么[[...]] 测试命令构造中有 2 个$。我尝试删除 1 $,但随后 Docker 抱怨健康检查选项的插值格式无效...
第一个 $ 是否在 docker-compose 文件中用于某些特定目的,或者 $$? 本身是否是一些特殊的 shell 变量?
在 elastic 的 Github 存储库上链接到完整的 docker-compose.yml。上述行对应链接的 docker-compose.yml 中的第 38 行。
【问题讨论】:
-
您为什么尝试删除
$? docker-compose 执行时会失败吗? -
我删除了第一个
$只是为了看看它是否有效。因为测试是看curl是否返回状态码52。我没有得到的是如果$?表示前一个程序的退出状态为什么脚本使用$$?是的,docker-compose失败当我删除第一个$时开始
标签: linux bash elasticsearch curl docker-compose