Shell 命令检索curl 的输出不起作用

问题描述 投票:0回答:1

我尝试通过 Kubernetes livenessProbe 执行此命令,但我认为它没有按预期工作,因为我在 pod 事件日志中看到探测器失败。 这是命令:

sh -c reply=$(curl -s -o /dev/null -w %{http_code} http://127.0.0.1:8080/login); if [ "$reply" -lt 200 -o "$reply" -ge 400 ]; then exit 1; fi;

当我执行到容器中并运行此命令时,出现此错误:

/bin/sh: 1: [: Illegal number:

我 echo $reply ,运行上述命令后,reply 变量中没有存储任何内容。 当我运行不带“sh -c”部分的命令时,它可以工作并且变量回复将被填充。不知何故,sh 命令无法读取curl 命令的输出...我尝试删除curl 请求的-o /dev/null 部分,但这没有帮助。

我怎样才能执行这个命令?

shell kubernetes curl output livenessprobe
1个回答
0
投票

要使用多个同步命令运行

sh -c 
,您需要将它们括在引号内,并在命令内使用的任何引号中添加反斜杠

sh -c "export reply=$(echo 200); if [ \"\$reply\" -lt 200 -o \"\$reply\" -ge 400 ]; then exit 1; fi;"
© www.soinside.com 2019 - 2024. All rights reserved.