Bash,将字符串与数组值进行比较

问题描述 投票:-1回答:1

我尝试将参数与某些数组内容匹配。在if子句应该为true,但事实并非如此。在比较之前的输出中,我得到了:

VAL:drei_01 AND: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: $1"

        if [[ $1 == *" $val "* ]]; then
            echo "TESTENTRY1"
            #do something
            mbool=1
            break
        fi
    done

    if [[ $mbool -eq 0 ]]; then
        echo "TESTENTRY2"
        #do something else
    fi

}

lookarr drei

谢谢

arrays bash string-comparison
1个回答
0
投票

您的if语句不匹配,因为它是从前到后且具有多余的空格。为了使drei与drei_01相匹配,您可以将if语句替换为:

if [[ "$val" == *"$1"* ]]; then
© www.soinside.com 2019 - 2024. All rights reserved.