【发布时间】:2023-01-24 00:27:22
【问题描述】:
我不确定这是否是在 elif 语句中定义变量的好方法。
我想将 VALUE 设置为 CUSTOM_KEY 的值,如果它包含其他内容,则从 configmap 获取值。
似乎有时在第二个 elif 语句中运行命令可能需要几秒钟,我不确定它是否会影响命令的结果。
if [[ -n "${CUSTOM_KEY}" ]]; then
VALUE="${CUSTOM_KEY}"
echo "VALUE: ${VALUE} set from CUSTOM_KEY"
elif [[ -n "${VALUE="$(kubectl get configmap configmapvalue -n "${N}" -o jsonpath="{.data.VALUE}")"}" ]]; then
echo "VALUE: ${VALUE} set from configmap configmapvalue"
else
echo "Please, define a CUSTOM_VALUE"
fi
echo "${VALUE}"
【问题讨论】:
-
这里唯一可能需要几秒钟的是
kubectl get。这不是 bashif语句的问题,而是 kubectl 的问题——我不知道您希望我们对此做些什么。 -
这是正确的。
kubectl get可能需要几秒钟,我不确定这是否是我在VALUE中得到空字符串的原因。 -
怎么办是一个问题是试图用错误的语法进行赋值。跟延迟没有关系。
-
注意
${var=value}和${var:=value}不一样,因为前者只修改一个未设置的变量。一个变量设置为空值仍然设置。 -
我已经检查了
kubectl get ..是否向VALUE分配了一些东西,如果我运行echo "$(kubectl get configmap configmapvalue -n "${N}" -o jsonpath="{.data.VALUE}")"}"我可以看到这个值,但是在管道中运行代码它没有得到任何值。
标签: linux bash shell if-statement