Bash 'om annat' uttalande: Handledning och exempel

Använda if…else-satsen i Bash för exekvering av villkorlig kod.

Bash (Bourne Again Shell) är en skalkommandotolk och ett skriptspråk i GNU/Linux operativsystem. Det är standardskalet för de flesta Linux-distributioner.

Villkorliga uttalanden är viktiga i alla programmeringsspråk, kompilerade såväl som skriptade. De låter användaren exekvera en bit kod baserat på ett fördefinierat villkor, vilket är en av grunderna för programmeringslogik. I den här artikeln kommer vi att lära oss hur man använder om annat villkorligt uttalande i Bash.

Introduktion

De om annat uttalande i Bash låter användaren manipulera flödet av kod baserat på förhållanden. Användaren kan specificera separata kodblock som ska exekveras, av vilka endast ett slutligen kommer att exekveras under körning, baserat på motsvarande villkor som är uppfyllt.

Observera att mer än två villkor kan anges, för vilka elif uttalande kan användas. Användaren kan ange valfritt antal villkor med hjälp av elif, och slutligen ett standardvillkor som använder annan blockera. Låt oss se mer om detta i syntaxen och exemplen nedan.

Allmän syntax

Den allmänna syntaxen för om annat uttalande i Bash är:

om då  annan  fi

Här, om uppfyller, d.v.s. om den returnerar 0 (framgång), så exekveras kodblock 1. Om tillståndet inte returnerar 0, dvs det returnerar en felstatus, exekveras kodblocket 2. De om annat blocket slutar med en fi påstående.

För flera block som motsvarar flera villkor,elif är använd:

om då  elif då  elif då  ... ... annat  fi

Här kontrolleras villkoren i ordning och kodblocket för det första villkoret som returnerar status 0 (framgång) exekveras. T.ex. om returnerar status som inte är noll (fel), då är kontrollerad. Om returnerar status 0, avrättas. Efter detta kontrolleras inte ytterligare villkor och kodexekveringen fortsätter till koden efter fi påstående.

Om inget av villkoren returnerar status 0, i det andra blocket exekveras. Observera att det andra blocket är valfritt. Om inget villkor är uppfyllt, samt nej annan block är specificerat, inget villkorligt kodblock kommer att köras och kodexekveringen fortsätter till koden efter fi uttalande, som visas i flödesdiagrammet nedan.

Observera att sedan uttalandet ska användas först efter om och elif uttalanden och krävs inte efter annan påstående.

Exempel

För att exekvera ett kodblock om en variabel har ett särskilt värde:

x=0 om [ $x -eq 0 ] sedan eko "Värdet på X är 0" annars eko "Värdet på X är inte 0" fi

Så här kontrollerar du om det finns flera värden:

x=2 om [ $x -eq 0 ] sedan eko "Värde på X är 0" elif [ $x -eq 1 ] sedan eko "Värde på X är 1" elif [ $x -eq 2 ] sedan eko "Value of X är 2" annars eko "Värdet på X är inte 0" fi

Villkoren kan vara alla Linux-kommandon. Motsvarande kodblock kommer att köras om kommandot körs framgångsrikt.

om npm -v sedan upprepa "NPM närvarande i systemet" annars sudo apt installera npm fi

I exemplet ovan, sedan npm inte installerades i systemet, kommandot npm -v returnerade en status som inte är noll. Därför gick kodexekveringen in i annan block, där vi installerar npm med hjälp av benägen pakethanterare. Som vi kan se, fick det mig att ange lösenordet och började installationen av npm.

Vi kan också häcka en annan om annat block inuti en om, annan eller elif blockera:

x=0 y=1 om [ $x -eq 0 ] sedan eko "X är 0" om [ $y -eq 1 ] sedan eko "Y är 1" annars eko "Y är inte 1" fi annat eko "X är inte 0" fi

Detta är användbart när en separat uppsättning villkor ska kontrolleras när ett initialt villkor är uppfyllt.

Till exempel försöker följande kod installera en webbserverprogramvara:

om nginx -v sedan upprepa "NGINX är redan installerat." annars, om sudo apt installerar nginx, upprepa "NGINX-installationen lyckad." elif sudo apt installera apache2 och sedan upprepa "APACHE2 installationen lyckades." else echo "Det går inte att installera någon webbprogramvara." fi

Koden kontrollerar först om Nginx redan är installerat i systemet. Om det är det, visar den bara ett meddelande och avslutas. Om det inte är det försöker den installera Nginx.

Om Nginx av någon anledning inte kunde installeras i systemet från paketet, försöker den installera Apache2. Om till och med Apache2 ger fel under installationen, avslutas den och visar ett meddelande om att ingen programvara kunde installeras.

På liknande sätt kan ett kapslat block användas inuti en elif blockera också.

Utför om annat: Skript och kommandorad

I likhet med vilken Bash-kod som helst, är om annat uttalande kan användas i Bash-skal direkt eller från en körbar skalskriptfil. När Bash-tolken hittar en om, annan eller elif uttalandet fortsätter det skalet för att låta användaren gå in i kodblocket.

Användaren kan också spara denna kod i en skriptfil och köra skriptfilen.

De #!/bin/bash vid starten anger tolken som ska användas när filen körs. Även om Bash är det vanligaste skalet nuförtiden, föredrar vissa användare skal som zsh, som bör anges i stället för bash i början av den här filen.

För att ge exekveringsbehörigheter för den här filen, kör:

chmod +x test.sh

Slutligen, för att köra filen, kör:

./test.sh

Slutsats

Liknar alla programmeringsspråk, om annat uttalande är en grundläggande egenskap hos Bash. Att lära sig dess användning går långt i att skriva grundläggande såväl som avancerade skript.