Hvis og ellers betingelser i zsh -skript

Hvis og ellers betingelser i zsh -skript
Beslutningsprosesser, også kalt Conditionals, er en grunnleggende byggestein i programmering. I denne opplæringen vil vi diskutere hvordan du implementerer betingelser i skriptene våre ved hjelp av ZSH -skallet.

Det er bra å merke seg at siden Zsh er bygget på toppen av bash, er syntaks og funksjonalitet like for skript bygget for bash eller zsh -skall.

Hvis uttalelse

Den mest grunnleggende måten å implementere betinget logikk på et skallskript er ved å bruke en IF -uttalelse. Den generelle syntaks for en IF -uttalelse i ZSH er nedenfor:

#!/usr/bin/zsh
Hvis tilstand
deretter
// Kjør kommandoer
fi

For å implementere en IF -uttalelse, starter vi med å ringe IF -nøkkelordet. Vi passerer deretter det betingede uttrykket for å evaluere. Det betingede uttrykket må returnere en boolsk verdi.

Etter at det betingede uttrykket kommer til daværende nøkkelord og FI -blokken, inne i disse blokkene, passerer vi kommandoene for å kjøre hvis det betingede uttrykket evaluerer til True.

Hvis det betingede uttrykket som er gitt, evalueres til en boolsk falsk, blir kommandoblokken inne i den daværende FI -blokken ignorert, og betingede utganger.

Selv om det ikke er nødvendig, anbefales det å innrykk kodeblokkene dine for lesbarhet og vedlikehold.

Tenk på eksemplet hvis uttalelsen nedenfor:

berøring av betingelser.sh && vim conditionals.sh
#!/usr/bin/zsh
if [[100 -GT 50]]
deretter
ekko "100 er større enn 50"
fi

Lagre filen og lukk.

Deretter gjør filen kjørbar ved å bruke CHMOD -kommandoen som:

CHMOD +X Conditionals.sh

Til slutt, kjør manuset som:

./betingelser.sh

Skriptet kjører IF -blokken og sjekk om 100 er større enn 50. Hvis det er sant, vil det kjøre Echo -kommandoen og avslutte.

Nedenfor er et eksempelutgang:

$ ./betinget.sh
100 er større enn 50

Hvis ... ellers uttalelse

En mer utviklet versjon av IF -uttalelsen er IF… ellers uttalelse. Det fungerer som IF -uttalelsen, men legger til et håndtak hvis det betingede uttrykket evaluerer til usant.

Nedenfor er den generelle syntaksen for IF… ellers uttalelse:

#!/usr/bin/zsh
Hvis betinget
deretter
// kommandoer for å kjøre hvis det er sant
ellers
// kommandoer for å kjøre hvis de er falske
fi

Som det fremgår av eksemplet over, utføres hvis det betingede uttrykket evaluerer til True, utføres blokken mellom da og ellers uttalelser. Imidlertid, hvis den er usant, utføres ellers andre blokken.

Tenk på eksemplet som er vist nedenfor:

#!/usr/bin/zsh
ekko -n "Skriv inn et tall:"
Les Num
if [[$ num -gt 50]]
deretter
ekko "$ num er større enn 50"
ellers
ekko "$ num er ikke større enn 50"
fi

I eksempelskriptet ber vi brukeren om å oppgi et nummer. Hvis tallet er større enn 50, gjenspeiler vi at tallet er større enn 50. Hvis det er usant, gjenspeiler vi at tallet ikke er større enn 50.

Nedenfor er et eksempelutgang:

$ ./betinget.sh
Skriv inn et tall: 10
10 er ikke større enn 50
$ ./betinget.sh
Skriv inn et tall: 80
80 er større enn 50

Hvis ... elif ... ellers uttalelser

I noen tilfeller kan det være lurt å teste flere forhold i en blokk. For å implementere en slik logikk, kan vi bruke IF… elif… ellers uttalelse.

I en if… elif… ellers uttalelse, legger vi til flere betingede uttrykk der bare en tilstand evaluerer til sann. Hvis den første tilstanden er sann, utfør sin blokkering; Hvis ikke, sjekk det andre og fortsett til alle forholdene er sjekket.

Syntaksen for IF… Elif -blokken er:

#!/usr/bin/zsh
Hvis tilstand1
deretter
// Block1
ELIF -tilstand2
deretter
// block2
elif conditionn
deretter
// Blockn
ellers
// Hvis alle forhold evalueres til usant
fi

Forholdene blir evaluert sekvensielt. Hvis man evaluerer til sann, utføres kodeblokken. Imidlertid, hvis ingen av forholdene er sanne, utføres den andre blokken.

Annets blokkering er valgfri, men anbefales å håndtere en situasjon der ingen tilstand er sann.

Her er et eksempelskript:

if [[$ num -eq 10]]
deretter
ekko "nummer = $ num"
elif [[$ num -eq 20]]
deretter
ekko "nummer = $ num"
elif [[$ num -eq 30]]
deretter
ekko "nummer = $ num"
ellers
ekko "nummer er verken 10, 20 eller 30"
ekko "nummer = $ num"
fi

Ovennevnte skript implementerer en ELIF -blokk hvis antallet som er angitt er enten 10, 20 eller 30. Hvis ikke, de andre blokkeringene for å håndtere tilstanden som vist i utførelsen nedenfor:

./betinget.sh
Skriv inn et tall: 10
Nummer = 10
Skriv inn et tall: 20
Nummer = 20
Skriv inn et tall: 30
Nummer = 30
Skriv inn et tall: 51
Antallet er verken 10, 20 eller 30
Nummer = 51

Du kan ha så mange elif -uttalelser som du synes passer. Imidlertid, hvis slike scenarier oppstår, kan du vurdere å implementere en saksblokk.

Betingede operatører

I eksemplene ovenfor implementerte vi betingede operatører som -eq (lik) og -GT (større enn). ZSH støtter andre betingede operatører som:

  • A -eq b - Sant hvis a er numerisk lik b
  • A -GT b - Sant hvis a er numerisk større enn b
  • a -lt b - Sant hvis a er numerisk mindre enn b
  • a -ne b - Sant er en er ikke numerisk lik b
  • A -LE b - Sant hvis a er numerisk mindre enn eller lik b
  • a -ge b - Sant hvis a er numerisk større enn eller lik b
  • en != b - Sant hvis strengen a ikke er lik streng b
  • a = b - Sant hvis streng a er lik streng b
  • -z streng - Sant hvis strengens lengde er null
  • -n Streng - Sant hvis strengens lengde er ikke-null
  • -en fil - Sant hvis filen eksisterer
  • -H -fil - Sant hvis filen eksisterer og er en symbolsk lenke
  • -f fil - Sann hvis filen eksisterer og er en vanlig fil (ikke en katalog eller spesiell fil)
  • -D -fil - Sant hvis filen eksisterer og er en katalog
  • -e fil - Sant hvis filen eksisterer uavhengig av typen
  • -R -fil - Sant hvis filen eksisterer og er lesbar av den nåværende prosessen
  • -w fil - Sant hvis filen eksisterer og skrives av den nåværende prosessen
  • -x fil - Sant hvis filen eksisterer og kan kjøres av den nåværende prosessen
  • -g fil - Sant hvis filen eksisterer og har setgid bit satt
  • -s fil - Sant hvis filen eksisterer og størrelsen er større enn null
  • -u - Sant hvis filen eksisterer og har setuid bit satt
  • -o fil - Sant hvis fil eksisterer og eies av gjeldende ID
  • ! Exp - Sant hvis uttrykket er usant
  • a && b - Sant hvis både a og b er sant
  • a || b - Sant hvis enten a eller b er sant

Ovennevnte er eksempler på betingede uttrykk du kan bruke i ZSH -skriptene dine. Sjekk ut dokumentasjonen for å lære mer.

Konklusjon

Denne opplæringen har vist deg hvordan du implementerer betinget logikk i ZSH -skriptene våre ved å bruke IF -utsagn. Sjekk gjerne ut Zsh Scripting -dokumentasjonen for å lære mer.

Takk for at du leser!