5 exempel på Bash-skript som hjälper dig att lära dig Linux-programmering
Snabblänkar
⭐ Hur man skriver ut Hello World i Bash
⭐ Skapa en katalog genom att läsa indata
⭐ Skapa en katalog med kommandoradsargument
⭐ Radera en fil med hjälp av en Bash-funktion
⭐ Skapa en grundläggande kalkylator för aritmetiska beräkningar
Bash-skript är ett mycket vanligt och lättillgängligt sätt för användare att programmera sina Linux-baserade datorenheter. Genom att tillhandahålla rudimentära skriptexempel underlättas förståelsen av de underliggande processerna och ger en introduktion till de grundläggande principerna för Bash-programmering.
Hur man skriver ut Hello World i Bash
Den uppskattade “Hello World”-demonstrationen fungerar som en utmärkt introduktion till alla kodspråk, inklusive det uppskattade skriptspråket Bash.
För att skapa en snygg utskrift i Bash kan man använda en kortfattad och uttrycksfull kommandoradssyntax som utnyttjar inbyggda kommandon och parametrar. Processen för att skriva ut “Hello World” innebär att echo utility anropas med lämpliga argument för att återge text på terminalskärmen.
Öppna en lämplig textredigerare, t.ex. Microsoft Word eller Google Docs, och börja arbeta med ett nytt dokument som innehåller följande rader med källkod nedan:
⭐ Den första raden i dina Bash-skript ska alltid se ut så här:
#!/bin/bash
Shebang-direktivet, som betecknas med symbolen “#!” följt av en sökväg till en körbar binärfil och tolkas av operativsystemets laddare, fungerar som en kritisk komponent för att bestämma vilken tolk som är lämplig för att köra ett visst skript. När operativsystemet stöter på shebang-kommandot “#!/bin/bash” i en skriptfil anropar det Bash-tolken för att exekvera skriptet i enlighet med detta.
⭐ Varje rad som börjar med symbolen # är en kommentar. Shebang-raden är ett specialfall, men du kan använda dina egna kommentarer för att förklara din kod. Lägg till en kommentar på rad 2, t.ex. :
# Print some text from a bash script
⭐ Du kan skriva ut till standardutdata med kommandot echo, följt av det värde du vill skriva ut. Lägg till följande på rad 3:
echo "Hello World"
När du skapar ett skript i Bash rekommenderas det att du följer en namnkonvention genom att lägga till filändelsen “.sh” till skriptets filnamn. Även om det inte är ett absolut krav kan en sådan konvention göra det lättare att identifiera och organisera skript.
⭐ För att köra ditt skript, gör filen körbar.Använd kommandot chmod (“ändra läge”) tillsammans med argumentet \\+x (“körbar”) och namnet på ditt skalskript:
chmod \\+x hello_world.sh
⭐ Använd det här kommandot för att köra skriptet från dess katalog:
./hello_world.sh
⭐ När skriptet körs kommer texten “Hello World” att skrivas ut på terminalen:
Skapa en katalog genom att läsa indata
Genom att implementera anpassade skript kan man utföra kommandon som vanligtvis anges i terminalen, t.ex. skapa en ny katalog genom att använda kommandot mkdir i sitt skript.
⭐ Börja med samma shebang-rad som tidigare:
#!/bin/bash
⭐ Fråga användaren om ett katalognamn med hjälp av kommandot echo som tidigare:
echo "Enter new directory name:"
⭐ Använd det inbyggda kommandot read för att hämta användarens inmatning. Det enda argumentet namnger en variabel som skalet kommer att lagra indata i:
read newdir
⭐ När du behöver använda det värde som lagrats i en variabel, prefixa dess namn med en dollarsymbol ( $ ). Du kan skicka innehållet i inmatningsvariabeln som ett argument till kommandot mkdir för att skapa en ny katalog:
mkdir $newdir
⭐ När du kör detta skript kommer det att be dig om inmatning. Ange ett giltigt katalognamn så ser du att skriptet skapar det i din aktuella katalog:
Skapa en katalog med kommandoradsargument
I stället för att manuellt ange indata kan man i många kommandoradsprogram i Linux ange argument vid körningen för att påverka hur programmet fungerar.
Inom ramen för ditt skript är det möjligt att använda variablerna $1 till $9 för att representera värdena för argumenten ett till nio. Den specifika tillämpningen eller syftet med att använda dessa variabler kan variera beroende på kraven för den aktuella uppgiften.
⭐ Skapa en katalog med kommandot mkdir från föregående exempel. Den här gången använder du dock den inbyggda variabeln $1:
#!/bin/bash
mkdir $1
⭐ Kör skriptet, den här gången med det valda namnet på en ny katalog som argument:
./arg_dir.sh Test
När du kör skriptet utan att ange någon indata kan du stöta på ett användningsfel som börjar med “mkdir”.
Om det inte finns några kommandoradsargument kommer den första positionsparametern ($1) att ge ett tomt värde. När kommandot “mkdir” körs i ett skript skickas inget argument till kommandot, vilket resulterar i ett fel som returneras av kommandot “mkdir”.För att kringgå detta problem kan man verifiera sådana villkor själv och ge ett mer användarvänligt felmeddelande istället.
⭐ Som alltid ska du börja med shebang-raden:
#!/bin/bash
⭐ Innan du anropar mkdir ska du kontrollera att det första argumentet är tomt (dvs. inga argument). Du kan göra detta med hjälp av Bashs if-sats som kör kod baserat på ett villkor:
if ["$1" = ""]; then
⭐ Om det första argumentet är tomt skriver du ut ett felmeddelande och avslutar skriptet:
echo "Please provide a new directory name as the first argument"
exit
⭐ Det lite märkliga nyckelordet “fi” (“if” omvänt) signalerar slutet på en if-sats i Bash:
fi
⭐ Ditt skript kan nu fortsätta som tidigare, för att hantera fallet när ett argument är närvarande:
mkdir $1
Vid körning av den uppdaterade versionen av dagens program är det viktigt att alla nödvändiga inparametrar anges. Om så inte sker kommer ett varningsmeddelande att genereras som informerar användaren om denna försummelse.
Radera en fil med hjälp av en Bash-funktion
Om du stöter på repetitiv kod kan det vara bra att kapsla in den i en funktion. Detta gör det möjligt att implementera funktionens logik vid valfri tidpunkt genom att helt enkelt anropa den efter behov.
Här är en illustration av en funktion som eliminerar en angiven fil.
⭐ Börja med shebang-raden:
#!/bin/bash
⭐ Definiera en funktion genom att skriva dess namn följt av tomma parenteser och kommandon inom lockiga hakparenteser:
del_file() {
echo "deleting $1"
rm $1
}
Du kan sedan anropa funktionen och ge den namnet på en fil som ska raderas:
del_file test.txt
När en funktion anropas tilldelas en unik specialvariabel “$?” med exitkoden för det sista kommandot som kördes. Denna exitkod fungerar som ett effektivt sätt att utvärdera fel och kan användas för att avgöra om kommandot “rm” utfördes framgångsrikt eller inte, vilket visas i detta exempel.
if [ $? -ne 0 ]; then
echo "Sorry, could not delete the file"
fi
Skapa en enkel räknare för aritmetiska beräkningar
Följande exempel visar en enkel räknare. Vid exekvering matar användaren in två siffror och väljer en aritmetisk funktion som ska utföras på dem.
Här är koden för calc.sh :
#!/bin/bash
# Take operands as input
echo "Enter first number: "
read a
echo "Enter second number: "
read b
# Input type of operation
echo "Enter Arithmetic Operation Choice :"
echo "Addition"
echo "Subtraction"
echo "Multiplication"
echo "Division"
read choice
# calculator operations
case $choice in
1)
result=`echo $a \\+ $b | bc`
;;
2)
result=`echo $a - $b | bc`
;;
3)
result=`echo $a \* $b | bc`
;;
4)
result=`echo "scale=2; $a / $b" | bc`
;;
esac
echo "Result: $result"
Tänk på användningen av uttrycket case
i Bash, som fungerar som en analog konstruktion till switch-satsen som finns i olika programmeringsspråk.Detta möjliggör utvärdering av en parameters värde mot flera förutbestämda värden och därefter exekvering av motsvarande funktionalitet baserat på resultatet av en sådan utvärdering.
Detta skript använder kommandotbcc för att utföra alla aritmetiska operationer.