Come verificare se un array di bash contiene un valore

Come verificare se un array di bash contiene un valore

Bash è una shell unix ampiamente utilizzata che fornisce una serie di potenti strumenti per l'amministrazione e l'automazione del sistema. Una delle strutture di programmazione più comunemente utilizzate negli script bash è un array, che consente di archiviare più valori in una singola variabile, questo articolo, discuterà come verificare se un array bash contiene un valore specifico.

Come verificare se l'array bash contiene un valore

Ecco tre metodi distinti che puoi usare per determinare se un array in bash include un valore:

    • Usando un ciclo
    • Utilizzando il comando Grep
    • Utilizzando la sintassi $ array [@]/pattern/sostituzione

Metodo 1: usando un ciclo

Un modo per verificare se un array di bash contiene un valore è quello di iterare sull'array usando un ciclo per che confronta ogni elemento con il valore che si desidera trovare, ecco un esempio:

#!/Bin/Bash
auto = ("bmw" "volvo" "kia")
car_to_find = "kia"
per auto in "$ CARS [@]"
Fare
if ["$ car" == "$ car_to_find"]
Poi
echo "trovato $ auto!"
rottura
fi
Fatto


Qui ho una serie di marchi di auto e voglio trovare il marchio "Kia", quindi itero sopra l'array usando un ciclo per loop e confronta ogni marchio di auto con il marchio che voglio trovare. Se troviamo una corrispondenza, stampiamo un messaggio ed esci dal loop usando l'istruzione Break.

Metodo 2: usando il comando Grep

L'uso del comando GREP per cercare il valore nell'array è un'altra tecnica per determinare se un array di bash ha un valore, ecco un'illustrazione:

#!/Bin/Bash
auto = ("bmw" "volvo" "kia")
car_to_find = "kia"
if echo "$ CARS [@]" | grep -qw "$ car_to_find"; Poi
echo "trovato $ car_to_find!"
altro
echo "$ car_to_find non trovato."
fi


Qui, abbiamo usato il comando Echo per stampare l'array per uscita standard e tuffarlo su Grep. L'opzione -Q dice a Grep di essere silenzioso e restituisce solo un codice di stato che indica se il modello è stato trovato o no. L'opzione -w dice a Grep di abbinare il modello come un'intera parola. Se Grep trova lo schema, l'istruzione IF stampa un messaggio che indica che il valore è stato trovato.

Metodo 3: usando $ array [@]/pattern/sostituzione sintassi

Un terzo modo per verificare se un array bash contiene un valore è utilizzare la sintassi $ array [@]/pattern/sostituzione per sostituire il valore che si desidera trovare con una stringa diversa, quindi confronta l'array risultante vettore. Ecco un esempio:

#!/Bin/Bash
auto = ("bmw" "volvo" "kia")
car_to_find = "kia"
if [["$ CARS [@]/$ CAR_TO_FIND/" != "$ CARS [@]"]; Poi
echo "trovato $ car_to_find!"
altro
echo "$ car_to_find non trovato."
fi


Qui, utilizziamo la sintassi $ array [@]/pattern/sostituzione per rimuovere il valore che vogliamo trovare dall'array e se l'array risultante è diverso dall'array originale, significa che il valore è stato trovato.

Conclusione

Abbiamo discusso di tre diversi metodi per verificare se un array di bash contiene un valore che è: usando un ciclo, usando il comando GREP e usando $ array [@]/pattern/sostituzione sintassi. Utilizzando queste tecniche, è possibile cercare in modo efficiente attraverso gli array di bash ed eseguire le operazioni necessarie sui valori che trovi.