bash多个OR和AND运算符不产生结果

时间:2019-06-27 19:49:08

标签: bash

团队

我有多个变量值需要检查并循环运行,但是当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

1 个答案:

答案 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