Izjava Bash 'if else': Vadnica in primeri

Uporaba stavka if…else v Bashu za pogojno izvajanje kode.

Bash (Bourne Again Shell) je ukazni poziv in skriptni jezik lupine v operacijskih sistemih GNU/Linux. To je privzeta lupina za večino distribucij Linuxa.

Pogojni stavki so ključnega pomena v katerem koli programskem jeziku, tako prevedeni kot skriptni. Uporabniku dovolijo, da izvede del kode na podlagi vnaprej določenega pogoja, ki je eden od temeljev programske logike. V tem članku se bomo naučili, kako uporabljati če potem pogojni stavek v Bashu.

Uvod

The če potem stavek v Bash omogoča uporabniku, da manipulira s tokom kode glede na pogoje. Uporabnik lahko določi ločene bloke kode, ki se izvajajo, od katerih se bo med izvajanjem končno izvedel le eden, na podlagi ustreznega pogoja, ki je izpolnjen.

Upoštevajte, da je mogoče določiti več kot dva pogoja, za katera elif lahko uporabite izjavo. Uporabnik lahko uporabi poljubno število pogojev elif, in končno privzeti pogoj z uporabo drugo blok. Oglejmo si več o tem v spodnji sintaksi in primerih.

Splošna sintaksa

Splošna sintaksa za če potem izjava v Bashu je:

če, potem  drugo  fi

Tukaj, če izpolnjuje, tj. če vrne 0 (uspeh), se izvede kodni blok 1. Če pogoj ne vrne 0, tj. vrne status napake, se izvede kodni blok 2. The če potem blok se konča z a fi izjava.

Za več blokov, ki ustrezajo več pogojem,elif se uporablja:

če, potem  elif potem  elif potem  ... ... drugo  fi

Tu se pogoji preverijo po vrstnem redu in izvede se kodni blok prvega pogoja, ki vrne status 0 (uspeh). Npr. če nato vrne stanje, ki ni nič (napaka). je preverjeno. Če vrne status 0, se izvaja. Po tem se nadaljnji pogoji ne preverjajo in izvajanje kode se nadaljuje na kodo po fi izjava.

Če noben od pogojev ne vrne status 0, v bloku else se izvede. Upoštevajte, da je blok else neobvezen. Če noben pogoj ni izpolnjen, pa tudi št drugo podan blok, se ne bo zagnal noben pogojni kodni blok, izvajanje kode pa se bo nadaljevalo s kodo po fi izjavo, kot je prikazano v spodnjem diagramu poteka.

Upoštevajte, da potem izjavo je treba uporabiti šele po če in elif izjave in niso obvezne po drugo izjava.

Primeri

Za izvedbo kodnega bloka če ima spremenljivka določeno vrednost:

x=0 če [ $x -eq 0 ] potem odmeva "Vrednost X je 0" drugače odmeva "Vrednost X ni 0" fi

Če želite preveriti več vrednosti:

x=2 če je [ $x -eq 0 ], potem odmeva "Vrednost X je 0" elif [ $x -eq 1 ] nato odmeva "Vrednost X je 1" elif [ $x -eq 2 ] nato odmeva "Vrednost X je 2" drugače odmeva "Vrednost X ni 0" fi

Pogoji so lahko kateri koli ukazi Linuxa. Ustrezni blok kode se bo izvedel, če se ukaz uspešno zažene.

če npm -v potem odmeva "NPM prisoten v sistemu" drugače sudo apt install npm fi

V zgornjem primeru, saj npm ni bil nameščen v sistemu, ukaz npm -v vrnil status, ki ni nič. Zato je šla izvedba kode v drugo blok, kamor namestimo npm s pomočjo apt upravitelj paketov. Kot lahko vidimo, me je pozval k vnosu gesla in začel nameščati npm.

Lahko ugnezdimo tudi drugo če potem blok znotraj an če, drugo oz elif blok:

x=0 y=1 če [ $x -eq 0 ] potem odmeva "X je 0", če [ $y -eq 1 ] potem odmeva "Y je 1" drugače odmeva "Y ni 1" fi drugače odmeva "X je ne 0" fi

To je uporabno, ko je treba preveriti ločen niz pogojev, ko je izpolnjen začetni pogoj.

Na primer, naslednja koda poskuša namestiti programsko opremo spletnega strežnika:

če nginx -v potem odmeva "NGINX je že nameščen." sicer če sudo apt install nginx, potem odjeknite "Namestitev NGINX uspešna." elif sudo apt install apache2 nato echo "Namestitev APACHE2 uspešna." else echo "Ni mogoče namestiti nobene spletne programske opreme." fi

Koda najprej preveri, ali je Nginx že nameščen v sistemu. Če je, samo prikaže sporočilo in zapusti. Če ni, poskuša namestiti Nginx.

Če iz nekega razloga Nginxa ni bilo mogoče namestiti v sistem iz paketa, poskuša namestiti Apache2. Če celo Apache2 med namestitvijo povzroči napako, se izpiše sporočilo, da programske opreme ni mogoče namestiti.

Na podoben način lahko ugnezdeni blok uporabimo znotraj datoteke elif tudi blok.

Izvajanje če potem: skripti in ukazna vrstica

Podobno kot katera koli Bash koda, če potem stavek lahko uporabite v lupini Bash neposredno ali iz izvedljive skriptne datoteke lupine. Ko Bash tolmač najde datoteko če, drugo oz elif stavek, nadaljuje lupino, da uporabniku omogoči vstop v kodni blok.

Uporabnik lahko to kodo tudi shrani v skriptno datoteko in jo izvede.

The #!/bin/bash na začetku določa tolmač, ki bo uporabljen, ko se datoteka izvaja. Čeprav je Bash danes najpogosteje uporabljena lupina, nekateri uporabniki raje uporabljajo lupine, kot je zsh, ki jih je treba navesti namesto bash na začetku te datoteke.

Če želite dati dovoljenja za izvajanje te datoteke, zaženite:

chmod +x test.sh

Končno, da zaženete datoteko, zaženite:

./test.sh

Zaključek

Podobno kot kateri koli programski jezik, če potem izjava je temeljna značilnost Basha. Učenje njegove uporabe je zelo pomembno pri pisanju osnovnih in naprednih skriptov.