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