Hvordan sjekke om en bash -matrise inneholder en verdi

Hvordan sjekke om en bash -matrise inneholder en verdi

Bash er et mye brukt UNIX -skall som gir et sett med kraftige verktøy for systemadministrasjon og automatisering. En av de mest brukte programmeringsstrukturene i bash -skripting er en matrise, som lar deg lagre flere verdier i en enkelt variabel, denne artikkelen, vil diskutere hvordan du kan sjekke om en bash -gruppe inneholder en spesifikk verdi.

Hvordan sjekke om bash -matrise inneholder en verdi

Her er tre forskjellige metoder du kan bruke for å bestemme om en matrise i bash inkluderer en verdi:

    • Ved hjelp av en sløyfe
    • Bruke GREP -kommandoen
    • Bruke $ array [@]/mønster/erstatning syntaks

Metode 1: Bruke en sløyfe

En måte å sjekke om en bash -matrise inneholder en verdi er å iterere over matrisen ved å bruke en for loop som sammenligner hvert element med verdien du vil finne, her er et eksempel:

#!/bin/bash
Cars = ("BMW" "Volvo" "Kia")
car_to_find = "kia"
for bil i "$ Cars [@]"
gjøre
if ["$ car" == "$ car_to_find"]
deretter
ekko "fant $ bil!""
gå i stykker
fi
Ferdig


Her har jeg en rekke bilmerker, og jeg vil finne merkevaren “Kia”, så jeg itererer over matrisen ved å bruke en for loop og sammenligne hvert bilmerke med merket jeg vil finne. Hvis vi finner en kamp, ​​skriver vi ut en melding og avslutter sløyfen ved hjelp av bruddserklæringen.

Metode 2: Bruke GREP -kommandoen

Å bruke GREP -kommandoen for å se etter verdien i matrisen er en annen teknikk for å avgjøre om en bash -gruppe har en verdi, her er en illustrasjon:

#!/bin/bash
Cars = ("BMW" "Volvo" "Kia")
car_to_find = "kia"
Hvis ekko "$ Cars [@]" | grep -qw "$ car_to_find"; deretter
ekko "Fant $ car_to_find!""
ellers
ekko "$ car_to_find ikke funnet.""
fi


Her brukte vi Echo -kommandoen for å skrive ut matrisen til standardutgang og røre den til grep. Alternativet -Q -alternativet forteller grep om å være stille og bare returnere en statuskode som indikerer om mønsteret ble funnet eller ikke. Alternativet -w forteller grep om å matche mønsteret som et helt ord. Hvis GREP finner mønsteret, skriver IF -setningen ut en melding som indikerer at verdien ble funnet.

Metode 3: Bruke $ array [@]/mønster/erstatning syntaks

En tredje måte å sjekke om en bash -matrise inneholder en verdi er å bruke $ array [@]/mønster/erstatning syntaks for å erstatte verdien du vil finne med en annen streng, og deretter sammenligne den resulterende matrisen med originalen Array. Her er et eksempel:

#!/bin/bash
Cars = ("BMW" "Volvo" "Kia")
car_to_find = "kia"
if [["$ cars [@]/$ car_to_find/" != "$ Cars [@]"]]; deretter
ekko "Fant $ car_to_find!""
ellers
ekko "$ car_to_find ikke funnet.""
fi


Her bruker vi $ array [@]/mønster/erstatning syntaks for å fjerne verdien vi ønsker å finne fra matrisen, og hvis den resulterende matrisen er forskjellig fra den opprinnelige matrisen, betyr det at verdien ble funnet.

Konklusjon

Vi har diskutert tre forskjellige metoder for å sjekke om en bash -matrise inneholder en verdi som er: ved hjelp av en loop, ved hjelp av grep -kommandoen og bruke $ array [@]/mønster/erstatning syntaks. Ved å bruke disse teknikkene kan du effektivt søke gjennom basraher og utføre de nødvendige operasjonene på verdiene du finner.