Linux/Unix Shell Scripting - Comparar listas para saber si un elemento coincide

 
Vista:

Comparar listas para saber si un elemento coincide

Publicado por Lily (1 intervención) el 23/11/2018 21:38:57
Hola, tengo que realizar una comparación entre dos listas de 4 elementos, concretamente:
lista1=("A" "Y" "M" "R")
y la segunda lista serían cuatro letras aleatorias.
Me gustaría comprobar si un elemento de la lista2 está también el la lista1. Conozco Python donde se compara con el comando "lista1[i] in lista2", pero no sabría hacerlo en Shell script.
(Cualquier método de comparar las listas me sirve, independientemente de si es más largo o no)
Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Comparar listas para saber si un elemento coincide

Publicado por Tom (331 intervenciones) el 24/11/2018 09:41:26
No sé si habrá formas compactas en alguna versión de bash reciente. Pero esto se suele resolver con un bucle:

1
2
3
4
5
6
7
8
for v in ${lista2[@]}
do
  if [ "$v" == "$valor_de_lista2" ]
  then
    echo "$v contenido en lista2"
    break;
  fi
done

En https://stackoverflow.com/questions/3685970/check-if-a-bash-array-contains-a-value proponen:
1
2
3
4
# Pon atencion a los espacios en blanco
if [[ " ${lista2[@]} " =~ " $valor_de_lista1 " ]]; then
    # whatever you want to do when arr contains value
fi
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar