¿Cuál es la forma más sencilla de comprobar dentro de un script de Bash si un array contiene un determinado elemento?
Estás leyendo una traducción autorizada de la pregunta Check if an array contains a value planteada por Paolo Tedesco en StackOverflow.
Respuestas
Lamentablemente no existe ninguna manera sencilla de hacerlo, pero sí que puedes utilizar la siguiente función:
function contiene() { local n=$# local value=${!n} for ((i=1;i < $#;i++)) { if [ "${!i}" == "${value}" ]; then echo "y" return 0 fi } echo "n" return 1 }
Y así es como podrías utilizarlo:
# definimos un array con tres elementos A=("one" "two" "three four") # comprobar si el array contiene los elementos if [ $(contiene "${A[@]}" "one") == "y" ]; then echo "contiene el elemento 'one'" fi if [ $(contiene "${A[@]}" "three") == "y" ]; then echo "contiene el elemento 'three'" fi
@librosweb
9 octubre 2014, 20:32