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}