Exempel på Bash-skript

Innan vi börjar skriva Bash-skripter är det en god idé att skapa en specifik katalogstruktur för att hålla ordning på våra filer, till exempel /home/ditt_användarnamn/scripts. Genom att samla alla skript i denna katalog kan du snabbt hitta, redigera och köra dem utan att behöva leta bland andra filer. Att organisera skripten på detta sätt är en enkel men effektiv vana som gör arbetet mer överskådligt och hjälper dig att utveckla goda rutiner redan från början.

Mitt första bash-skript

  1. Öppna en editor, till exempel gedit:
    • gedit hello.sh

  2. Om gedit inte hittas betyder att den behöver installeras, kör:
    • sudo apt-get install gedit

  3. I editorn skriv följande rader:
    • #!/bin/bash
    • echo ”Vad heter du?”
    • read name
    • echo ”Hej, $name! Välkommen till systemet.”
  4. Spara skriptet i rätt katalog, till exempel /home/ditt_användarnamn/scripts, så att du enkelt kan hitta det. Om du startade Gedit från denna katalog sparas filen automatiskt där, vilket gör det lättare att organisera och hitta dina skript.

Obs: Den första raden i skriptet anger för systemet vilken tolk (shell) som ska användas för att köra skriptet.

Nu ska du göra ditt skript körbart genom att exekvera följande kommando:

chmod +x hello.sh

Nu får du köra ditt skript på två olika sätt:

  1. genom att ange hela sökvägen: /home/ditt_användarnamn/scripts/hello.se
  2. genom att ange på prompten (förutsätter att skriptet finns i den aktuella katalogen): ./skriptetsnamn

Variabel $PATH

För att kunna köra ett skript utan att ange sökvägen (t.ex., bara genom att skriva hello.sh istället för ./hello.sh), kan du lägga till katalogen där skriptet finns till $PATH för den aktuella sessionen:

PATH=$PATH:/home/chalo/scripts

eller

export PATH=$PATH:~/scripts

Denna ändring gäller dock bara för den pågående sessionen. För att lägga till sökvägen permanent i $PATH, kan du redigera filen .profile i ditt hemkatalog. Lägg till följande rad längst ned i filen:

export PATH=$PATH:/home/ditt_användarnamn/scripts

Därefter ska du spara och stänga filen. För att ladda om filen .profile kör:

source ~/.profile

Nu har sökvägen inkluderats automatiskt, så att du kan köra dina skript direkt utan att ange hela sökvägen.

Exempel 1: Räkna ner från 5 till 1

#!/bin/bash
for i in {5..1}; do
echo ”$i”
done

  • for i in {5..1} skapar en loop som går från 5 till 1.
  • echo "$i" skriver ut varje tal.

Det kan också skrivas så här:

#!/bin/bash

for i in $(seq 5 -1 1); do

echo $i done

Exempel 2: Enkel räknare

#!/bin/bash
echo ”Ange ett nummer:”
read num
echo ”Resultat: $((num + 10))”

  • read num tar emot ett nummer från användaren.
  • $((num + 10)) utför en enkel beräkning (adderar 10 till det inmatade numret) och skriver ut resultatet.

Exempel 3: Visa dagens datum och tid

#!/bin/bash
echo ”Dagens datum och tid är:”
date

  • date skriver ut aktuell datum och tid.

Exempel 4: Kontrollera om en fil finns

#!/bin/bash
echo ”Ange filnamn:”
read filename
if [ -f ”$filename” ]; then
echo ”Filen $filename finns.”
else
echo ”Filen $filename finns inte.”
fi

  • if [ -f "$filename" ] kontrollerar om filen existerar.
  • echo skriver ut om filen finns eller inte.

Exempel 5: Diskanvändningskontroll

#!/bin/bash
disk_usage=$(df -h / | grep / | awk ’{print $5}’)
echo ”Diskanvändning: $disk_usage”

usage=$(echo $disk_usage | sed ’s/%//’)
if [ $usage -gt 80 ]; then
echo ”Varning: Diskanvändning är över 80%!”
else
echo ”Diskanvändningen är inom gränserna.”
fi

  • df -h / visar diskanvändning för root (/).
  • awk '{print $5}' extraherar procentvärdet.
  • sed 's/%//' tar bort %-tecknet.
  • Kontrollerar om diskanvändningen överstiger 80%.

exempel till ?