Bash,将字符串与数组值进行比较
Bash, compare string to arrayvalue
我尝试将参数与一些数组内容相匹配。在 if 子句中应该为真,但事实并非如此。
在比较之前的输出中,我得到了这个:
VAL:drei_01 和:drei
#!/bin/bash
array=( null_01 eins_01 zwei_01 drei_01 vier_01 )
lookarr() {
maxc=${#array[@]}
mbool=0
for((i=0; i<$maxc; i++))
do
val=${array[$i]}
echo "VAL: $val AND: "
if [[ == *" $val "* ]]; then
echo "TESTENTRY1"
#do something
mbool=1
break
fi
done
if [[ $mbool -eq 0 ]]; then
echo "TESTENTRY2"
#do something else
fi
}
lookarr drei
感谢
您的 if 语句不匹配,因为它是从后到前的并且有多余的空格。要使 drei 匹配 drei_01,您可以将 if 语句替换为:
if [[ "$val" == *""* ]]; then
我尝试将参数与一些数组内容相匹配。在 if 子句中应该为真,但事实并非如此。 在比较之前的输出中,我得到了这个:
VAL:drei_01 和:drei
#!/bin/bash
array=( null_01 eins_01 zwei_01 drei_01 vier_01 )
lookarr() {
maxc=${#array[@]}
mbool=0
for((i=0; i<$maxc; i++))
do
val=${array[$i]}
echo "VAL: $val AND: "
if [[ == *" $val "* ]]; then
echo "TESTENTRY1"
#do something
mbool=1
break
fi
done
if [[ $mbool -eq 0 ]]; then
echo "TESTENTRY2"
#do something else
fi
}
lookarr drei
感谢
您的 if 语句不匹配,因为它是从后到前的并且有多余的空格。要使 drei 匹配 drei_01,您可以将 if 语句替换为:
if [[ "$val" == *""* ]]; then