I den här guiden, kolla in hur du kontrollerar bash-utgångskoden för det senaste kommandot och några möjliga användningar av det.
Bash-utgångskod
Varje UNIX / Linux-kommando som körs av shell-skriptet eller användaren lämnar en utgångsstatus. Det är ett heltal som förblir oförändrat om inte nästa kommando körs. Om utgångskoden är 0, lyckades kommandot. Om utgångskoden inte är noll (1-255) betyder det ett fel.
Det finns många potentiella användningsområden för bash-utgångskoden. Den mest uppenbara är naturligtvis att verifiera om det sista kommandot körs ordentligt, särskilt om kommandot inte genererar någon utdata.
I fallet med bash är utgångskoden för föregående kommando tillgänglig med skalvariabeln “$?”.
Kontrollerar Bash Exit Code
Starta en terminal och kör något kommando.
$ datumKontrollera värdet på skalvariabeln “$?”För utgångskoden.
$ echo $?
Eftersom kommandot "datum" gick framgångsrikt är utgångskoden 0. Vad skulle hända om det uppstod ett fel?
Låt oss försöka köra ett kommando som inte finns.
$ abcdKontrollera utgångskoden.
$ echo $?
Det är ett värde som inte är noll, vilket indikerar att det tidigare kommandot inte kördes ordentligt.
Ta en titt på följande kommando:
$ kattprov.txt | grep “mynt”
När du arbetar med ett kommando som har en eller flera rör kommer utgångskoden att vara den sista koden som körs i röret. I det här fallet är det grep-kommandot.
Eftersom grep-kommandot lyckades blir det 0.
$ echo $?
I det här exemplet, om grep-kommandot misslyckas, kommer utgångskoden att vara noll.
$ kattprov.txt | grep “abcd”$ echo $?
Inkorporerar utgångskod i skript
Utgångskoden kan också användas för skript. Ett enkelt sätt att använda den är att tilldela den till en skalvariabel och arbeta med den. Här är ett exempel på skalskript som använder utgångskoden som ett villkor för att skriva ut specifik utdata.
$ #!/ bin / bash$ echo "hej världen"
$ status = $?
$ [$ status -eq 0] && echo "kommandot lyckades" || eko "kommandot misslyckas"
När det körs genererar skriptet följande utdata.
Låt oss nu se vad som händer när det finns ett ogiltigt kommando att köra.
$ #!/ bin / bash$ slumpmässigt kommando
$ status = $?
$ [$ status -eq 0] && echo "kommandot lyckades" || eko "kommandot misslyckades"
Utgången kommer att vara annorlunda när den körs.
Utgångskod Värde Förklaring
När utgångskoden inte är noll varierar värdet från 1 till 255. Vad betyder detta värde nu??
Även om värdet är begränsat är förklaringen av varje värde unik för programmet / skriptet. Till exempel har "ls" och "grep" olika förklaringar till felkod 1 och 2.
$ man ls$ man grep
Definiera utgångsstatus i skript
När vi skriver ett skript kan vi definiera anpassade utgångskodvärden. Det är en användbar metod för enklare felsökning. I bash-skript är det kommandot "exit" följt av värdet för exitkoden.
$ exitEnligt konventionen rekommenderas att tilldela utgångskod 0 för lyckad körning och använda resten (1-255) för eventuella fel. När kommandot exit nås kommer körningen av skalskriptet att avslutas, så var försiktig med placeringen.
Ta en titt på följande skalskript. Här, om villkoret är uppfyllt, kommer skriptet att avslutas med utgångskoden 0. Om villkoret inte uppfylls blir utgångskoden 1.
$ #!/ bin / bash$ if [["$ (whoami)" != root]]; sedan
$ echo "Inte root-användare."
$ utgång 1
$ fi
$ echo "root user"
$ exit 0
Verifiera resultatet av att köra detta skript utan sudo-behörighet eller "root" -användare.
$ ./prov.sh$ echo $?
Slutgiltiga tankar
Den här guiden visar vad utgångskoder är och hur du kan använda dem. Det visar också hur man tilldelar lämpliga utgångskoder i ett bash-skript.
Intresserad av bash scripting? Ett av de enklaste sätten att komma igång är att skriva egna skript. Kolla in den här enkla guiden om hur du skriver ett enkelt bash-skript.
Happy computing!