Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Cómo comprobar si un array de bash contiene un elemento

10 de septiembre de 2010

¿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

#1

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