How can I check if a string is in an array without iterating over the elements?

后端 未结 9 2299
眼角桃花
眼角桃花 2021-02-13 18:54

Is there a way of checking if a string exists in an array of strings - without iterating through the array?

For example, given the script below, how I can correctly impl

9条回答
  •  星月不相逢
    2021-02-13 19:32

    #!/bin/bash
    
    test="name"
    
    array=('hello' 'world' 'my' 'yourname' 'name' 'is' 'perseus')
    nelem=${#array[@]}
    [[ "${array[0]} " =~ "$test " ]] || 
    [[ "${array[@]:1:$((nelem-1))}" =~ " $test " ]] || 
    [[ " ${array[$((nelem-1))]}" =~ " $test" ]] && 
    echo "found $test" || echo "$test not found"
    

    Just treat the expanded array as a string and check for a substring, but to isolate the first and last element to ensure they are not matched as part of a lesser-included substring, they must be tested separately.

提交回复
热议问题