Grundläggande funktioner i Bash

Introduktion till Bash-skriptning

Alex Scriven

Data Scientist

Varför funktioner?

 

Om du har använt funktioner i R eller Python känner du igen dessa fördelar:

  1. Funktioner är återanvändbara
  2. Funktioner ger välstrukturerad, modulär kod
  3. Funktioner underlättar koddelning (du behöver bara känna till in- och utdata för att använda dem!)
Introduktion till Bash-skriptning

Bash-funktionens uppbyggnad

Låt oss gå igenom funktionens syntax:

  • Börja med att namnge funktionen. Namnet används sedan för att anropa den.
    • Se till att det är ett vettigt namn!
  • Lägg till parenteser efter funktionsnamnet
  • Skriv koden inuti klammerparenteser. Du kan använda allt du lärt dig hittills (loopar, IF, skal-i-skal osv.)!
  • Returnera eventuellt ett värde (obs! Det fungerar inte riktigt som du kanske tror)

 

En Bash-funktion har följande syntax:

function_name () {
    #function_code
    return #something
}
Introduktion till Bash-skriptning

Alternativ struktur för Bash-funktioner

Du kan också skapa en funktion så här:

function function_name {
    #function_code
    return #something
}

De viktigaste skillnaderna:

  • Använd nyckelordet function för att inleda funktionsdefinitionen
  • Du kan utelämna parenteserna på öppningsraden om du vill, men många behåller dem av konvention
Introduktion till Bash-skriptning

Anropa en Bash-funktion

Att anropa en Bash-funktion görs enkelt genom att skriva dess namn:

function print_hello () {
    echo "Hello world!"
}

print_hello # here we call the function
Hello world!
Introduktion till Bash-skriptning

Bash-funktion: Fahrenheit till Celsius

Vi skriver en funktion för att konvertera Fahrenheit till Celsius, precis som i en tidigare lektion, med hjälp av en statisk variabel.

temp_f=30

function convert_temp () {
temp_c=$(echo "scale=2; ($temp_f - 32) * 5 / 9" | bc)
echo $temp_c }
convert_temp # call the function
-1.11
Introduktion till Bash-skriptning

Nu kör vi en övning!

Introduktion till Bash-skriptning

Preparing Video For Download...