#!/usr/bin/env bash yell() { echo "$0: $*" >&2; } # print script path and all args to stderr die() { yell "$*"; exit 111; } # same as yell() but non-zero exit status try() { "$@" || die "cannot $*"; } # runs args as command, reports args if command fails checkIsInArray() { # Desc: Checks if input arg is element in array # Usage: checkIsInArray arg1 arg2 # Version: 0.0.1 # Input: arg1: test string # arg2: array # Output: exit code 0 if test string is in array; 1 otherwise # Example: checkIsInArray "foo" "${myArray[@]}" # Ref/Attrib: [1] How do I check if variable is an array? https://stackoverflow.com/a/27254437 # [2] How to pass an array as function argument? https://askubuntu.com/a/674347 local return_state input arg1 arg2 string_test local -a array_test input=("$@") # See [2] arg1="${input[0]}"; arg2=("${input[@]:1}"); #yell "DEBUG:input:${input[@]}"; #yell "DEBUG:arg1:${arg1[@]}"; #yell "DEBUG:arg2:${arg2[@]}"; string_test="$arg1"; array_test=("${arg2[@]}"); #yell "DEBUG:string_test:$string_test"; #yell "DEBUG:$(declare -p array_test)"; for element in "${array_test[@]}"; do #yell "DEBUG:element:$element"; if [[ "$element" =~ ^"$string_test" ]]; then return_state="true"; continue; fi; done; # Report exit code if [[ $return_state == "true" ]]; then return 0; else return 1; fi; } # Check if string is element in array # Sample test code my_array=("jan" "feb" "mar" "apr"); yell "Array contains:${my_array[@]}"; test_string="feb"; yell "Checking to see if $test_string is in array..."; if checkIsInArray "$test_string" "${my_array[@]}"; then yell "\"$test_string\" is in array"; else yell "\"$test_string\" is not in array"; fi; yell ""; # debug sleep 1; my_array=("jan" "feb" "mar" "apr"); yell "Array contains:${my_array[@]}"; test_string="oct"; yell "Checking to see if $test_string is in array..."; if checkIsInArray "$test_string" "${my_array[@]}"; then yell "\"$test_string\" is in array"; else yell "\"$test_string\" is not in array"; fi; yell ""; # debug sleep 1; my_array=("jan" "feb" "mar" "apr"); yell "Array contains:${my_array[@]}"; test_string="feb mar"; yell "Checking to see if $test_string is in array..."; if checkIsInArray "$test_string" "${my_array[@]}"; then yell "\"$test_string\" is in array"; else yell "\"$test_string\" is not in array"; fi; yell ""; # debug