我一直在写一个bash脚本,我找不到为什么!=运算符不工作。bash不等于运营商不工作
#/bin/bash
vips=()
vips+=(" Ltm::HTTP Profile: Default_HTTP_Profile")
vips+=(" Ltm::Virtual Address: 10.206.16.76")
for i in "${vips[@]}";
do
if [[ $i != *"TCP Profile"* ]] || [[ $i != *"OneConnect"* ]] || [[ $i != *"HTTP Profile"* ]]; then
echo "test"
fi
done
for i in "${vips[@]}";
do
echo "$i"
done
结果从这是
test
test
Ltm::HTTP Profile: Default_HTTP_Profile
Ltm::Virtual Address: 10.206.16.76
正如可以看到第二数组元素应该没有匹配的逻辑,如果。
当第一个分支返回true时,为什么它会到达第三个分支? –
1.引用你的变量。 2.使用'set -x'运行以查看实际正在运行的内容。 –
好吧我很笨。我明白你的意思。第一个分支将匹配这两个,所以 - 或运营商将无法正常工作。看起来我需要一个嵌套的IF来做我想做的事。 –