团队
我有多个变量值需要检查并循环运行,但是当bash上没有设置此类变量时,我看不到其他任何执行。
#!/bin/bash
if [[ $TEST_PERF_CLASS="DFC" || $TEST_PERF_CLASS="GFC" &&
${!K8S_Node_Name}="ALLCORDONED" ]]; then
for node in ${K8S_Node_Name[@]}; do
kubectl describe $node
done
else
printf "Invalid node or No Variables are set in env yet."
fi
预期输出:
Invalid node or No Variables are set in env yet.
实际输出:
prints nothing.. << empty
答案 0 :(得分:0)
=
周围的空白很关键:
if [[ $TEST_PERF_CLASS = "DFC" || $TEST_PERF_CLASS = "GFC" && ${!K8S_Node_Name} = "ALLCORDONED" ]]; then
for node in ${K8S_Node_Name[@]}; do
kubectl describe $node
done
else
printf "Invalid node or No Variables are set in env yet."
fi
否则,您只是在测试3个非空字符串实际上是非空的。您原来的命令相当于
if [[ -n $TEST_PERF_CLASS="DFC" || -n $TEST_PERF_CLASS="GFC" && -n ${!K8S_Node_Name}="ALLCORDONED" ]]; then