Ugrás a tartalomra
ITport

Írjunk scriptet egyszerűen! (Linux alapok, 13. rész)

Shell scriptek kezdőknek: az első script, változók és paraméterek, elágazás és ciklus, végül egy működő napi mentőscript.

Közzétéve: Linux és nyílt forrás

Aki már néhány hete használja a terminált, előbb-utóbb észreveszi, hogy ugyanazokat a parancsokat gépeli be újra és újra. Ilyenkor jön jól a shell script: egy egyszerű szöveges fájl, amelyben a parancsok egymás után szerepelnek, és egyetlen hívással lefuttathatók.

Az első script

Nyissunk egy szövegszerkesztőt (gedit, kate vagy a terminálban a nano), és írjuk be:

#!/bin/bash
# az első scriptünk
echo "Szia, $USER! Ma $(date +%Y-%m-%d) van."

Az első sor, a „shebang”, megmondja a rendszernek, melyik program értelmezze a fájlt. Mentsük el hello.sh néven, adjunk rá futtatási jogot a chmod +x hello.sh paranccsal, és indítsuk el: ./hello.sh.

Változók és paraméterek

Változót egyenlőségjellel adunk meg, szóköz nélkül: nev="ITport". Az értékére dollárjellel hivatkozunk: echo $nev. A scriptnek átadott paraméterek a $1, $2 … változókba kerülnek, a számukat a $# adja meg. A $(parancs) forma egy parancs kimenetét helyettesíti be – fent így került a dátum a szövegbe.

Elágazás és ciklus

if [ -f "$1" ]; then
  echo "$1 létezik"
else
  echo "$1 nem található"
fi

for f in *.txt; do
  echo "Feldolgozom: $f"
done

A szögletes zárójelek körüli szóközök kötelezőek – ez a kezdők leggyakoribb hibája.

Gyakorlati példa: napi mentés

Az alábbi script a saját Dokumentumok mappánkat dátummal ellátott, tömörített archívumba menti egy külső lemezre:

#!/bin/bash
CEL="/media/usbdisk/mentes"
NAP=$(date +%Y-%m-%d)
mkdir -p "$CEL"
tar -czf "$CEL/dokumentumok-$NAP.tar.gz" "$HOME/Dokumentumok"
echo "Kész: $CEL/dokumentumok-$NAP.tar.gz"

Ha a crontab -e paranccsal felvesszük az ütemezett feladatok közé, a mentés minden este magától lefut. A következő részben a cron használatával részletesen foglalkozunk.