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:
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.