names=(jack john jerry);
if [[ " "${names[@]}" " == *" "$1" "* ]] ;then
echo "$1: ok"
else
echo "$1: not recognized. Valid names are:"
echo "${names[@]/%/,}"
exit 1
fi
O código acima funciona para nomes que não contêm espaço em branco.
A versão modificada, abaixo, pode manipular espaços em branco em nomes.
names=("flash jack" john jerry);
d=$'' # validation delimiter - value is \x01
valid="${names[@]/%/$d}"
valid="$d${valid//$d /$d}"
if [[ $valid == *$d$1$d* ]] ;then
echo "$1: ok"
else
echo "$1: not recognized. Valid names are:"
echo "${names[@]/%/,}"
exit 1
fi
Saída para versão com espaço em branco:
flash jack: ok
ou
kate: not recognized. Valid names are:
flash jack, john, jerry,