Check if an Element Exists in an Array in Bash
Published: Sep 21, 2021
Updated: Feb 16, 2024
Updated: Feb 16, 2024
Why didn’t I just use Node.js or Python? Hey, you’re getting distracted. That’s not what this post is about. Just enjoy how hard someone else had to work to achieve this in Bash.
Snippet #
element_exists_in_array() {
local usage="\
Usage:
${FUNCNAME[0]} <element_to_find> <array>
Sample:
${FUNCNAME[0]} \"dog\" \"\${animals[@]}\"
Where <element_to_find> is the element to find.
Where <array> is the array to search."
if [[ ${#} -lt 2 ]]; then
echo -e "${usage}"
return 1
fi
local element_to_find="${1}"
shift
local array=("${@}")
for element in "${array[@]}"; do
if [[ "${element_to_find}" == "${element}" ]]; then
return 0
fi
done
return 1
}
Usage #
animals=(
"dog"
"lizard"
"frog"
)
if element_exists_in_array "dog" "${animals[@]}"; then
echo "It exists :)"
else
echo "It doesn't exist :("
fi