Search array return index in bash Search array return index in bash bash bash

Search array return index in bash


Something like that should work:

search() {    local i=1;    for str in "${array[@]}"; do        if [ "$str" = "$1" ]; then            echo $i            return        else            ((i++))        fi    done    echo "-1"}

While looping over the array to find the index is certainly possible, this alternative solution with an associative array is more practical:

array=([1,os]="Linux"   [1,type]="Test System"       [2,os]="Windows" [2,type]="Work Station"       [3,os]="Windows" [3,type]="Work Station")echo "number $1 is a ${array[$1,os]} ${array[$1,type]}"


You could modify this example from this link to return an index without much trouble:

# Check if a value exists in an array# @param $1 mixed  Needle  # @param $2 array  Haystack# @return  Success (0) if value exists, Failure (1) otherwise# Usage: in_array "$needle" "${haystack[@]}"# See: http://fvue.nl/wiki/Bash:_Check_if_array_element_existsin_array() {    local hay needle=$1    shift    for hay; do        [[ $hay == $needle ]] && return 0    done    return 1}