Ofir Farchy Ofir Farchy - 5 months ago 19
Linux Question

How do I check if a variable exists in a list in BASH

I am trying to write a script in bash that check the validity of a user input.

I want to match the input (say variable

x
) to a list of valid values.

what I have come up with at the moment is:

for item in $list
do
if [ "$x" == "$item" ]; then
echo "In the list"
exit
fi
done


My question is if there is a simpler way to do this,

something like a
list.contains(x)
for most programming languages.

Addition:

Say list is:

list="11 22 33"


my code will echo the message only for those values since
list
is treated as an array and not a string,
all the string manipulations will validate
1
while I would want it to fail.

Answer
[[ $list =~ $x ]] && echo 'yes' || echo 'no'

or create a function:

contains() {
    [[ $1 =~ $2 ]] && exit(0) || exit(1)
}

to use it:

contains aList anItem
echo $? # 0: match, 1: failed