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 Če noben od pogojev ne vrne status 0, Upoštevajte, da Za izvedbo kodnega bloka če ima spremenljivka določeno vrednost: Če želite preveriti več vrednosti: Pogoji so lahko kateri koli ukazi Linuxa. Ustrezni blok kode se bo izvedel, če se ukaz uspešno zažene. V zgornjem primeru, saj Lahko ugnezdimo tudi drugo 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: 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 Podobno kot katera koli Bash koda, Uporabnik lahko to kodo tudi shrani v skriptno datoteko in jo izvede. The Če želite dati dovoljenja za izvajanje te datoteke, zaženite: Končno, da zaženete datoteko, zaženite: Podobno kot kateri koli programski jezik, 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. 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.potem
izjavo je treba uporabiti šele po če
in elif
izjave in niso obvezne po drugo
izjava.Primeri
x=0 če [ $x -eq 0 ] potem odmeva "Vrednost X je 0" drugače odmeva "Vrednost X ni 0" fi
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
če npm -v potem odmeva "NPM prisoten v sistemu" drugače sudo apt install npm fi
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.č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
č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
elif
tudi blok.Izvajanje
če potem
: skripti in ukazna vrsticač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.#!/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.chmod +x test.sh
./test.sh
Zaključek
če potem
izjava je temeljna značilnost Basha. Učenje njegove uporabe je zelo pomembno pri pisanju osnovnih in naprednih skriptov.