我不确定这是否是在elif
语句中定义变量的好方法。
如果VALUE
包含其他内容,我想将其设置为CUSTOM_KEY
,从配置Map中获取该值。
有时候,运行第二条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}"
1条答案
按热度按时间z5btuh9x1#
直接的问题是
${var=value}
只在变量先前未设置 * 时才赋值给var
*。我们不知道它是否未被设置,因为
[ -n "$var" ]
只测试它是否为 empty,一个变量可以被设置为空值,在这种情况下${var=default}
不会改变它,但是${var:=default}
会。但是,您不需要使用
${var=default}
* 或 *${var:=default}
,因为如果elif
子句被执行,您就知道需要从kubectl更新值。