Bash-Programmierung

Sven Velt


(page 1)


Was ist Bash-Programmierung?







(page 2)


Vorgaben für diesen Vortrag



Normale Schrift

Courier-Font



(page 3)


Einfache Bash-Befehle (1)



$> echo Hier kann ganz viel Text stehen...
Hier kann ganz viel Text stehen...

$> file (BELIEBIGE_DATEI)




(page 4)


Einfache Bash-Befehle (2)


$> # Hier darf alles stehen
$>

$> ls -l backup.sh
-rw-r--r-- svelt users [...] backup.sh

$> chmod +x backup.sh

$> ls -l
-rwxr-xr-x svelt users [...] backup.sh


(page 5)


Aller Anfang ist schwer...



Die erste Zeile eines Bash-Skriptes:
#!/bin/bash


$> file bashprogrammierung.mgp
bashprogrammierung.mgp: ISO-8859 text

$> file bash-skript.sh
bash-skript.sh: Bourne-Again shell \
script text executable


(page 6)


Wie fängt man am besten an?



Wir suchen uns etwas, was man nicht gerne tut

Voraussetzung: gleicher / ähnlicher Ablauf


BackUp-Skript, das eine Config-Datei liest


(page 7)


stdin, stdout, stderr


$> html2text
$> make bzImage >kernel_compile_ausgabe

$> make bzImage >k_c_out 2>k_c_err oder
$> make bzImage >k_c_out 2>&1


(page 8)


Variablen in der Bash





Belegung durch
VARIABLENNAME=inhalt
VARIABLE2="Ein Text mit Leerzeichen"


Verwenung durch
$VARIABLENNAME


(page 9)


backup.sh - Teil 1



#!/bin/bash

# Hier sollen unsere Backup-Dateien
# gespeichert werden
ZIELORT=/var/backup

# Hier liegt die Konfigurationsdatei
CFGDATEI=/etc/backup.cfg


(page 10)


Einlesen von Daten in Variablen (1)



"read" liest Daten von der Standardeingabe in Variablen

Aufruf
read VAR1 VAR VAR3 ...




(page 11)


Einlesen von Daten in Variablen (2)



$> read V1 V2 V3
Eins Zwei und ab hier der Rest

$> echo $V1
Eins

$> echo $V2
Zwei

$> echo $V3
und ab hier der Rest


(page 12)


Eine Schleife



So oft durchlaufen, bis die Bedingung erfüllt ist

Unser Freund:

while (BEDINGUNG)
do
# So oft wie nötig hier durchlaufen
done


Anmerkung: Jeder Befehl ist eine Bedingung!


(page 13)


backup.sh - Teil 2



while read ARCHIVNAME VERZ ZUSICHERN

do

echo $ARCHIVNAME
echo $VERZ
echo $ZUSICHERN
echo

done <$CFGFILE


(page 14)


tar - Erstellen von Archiv-Dateien



Tar kennt u.a. folgende Optionen





tar czf archiv.tar.gz datei verzeichnis/ ...


(page 15)


backup.sh - Teil 3



while read ARCHIVNAME VERZ ZUSICHERN

do

cd $VERZ

tar cIf $ZIELORT/$ARCHIVNAME.tar.bz2 \
$ZUSICHERN

done <$CFGFILE


(page 16)


Anlegen der Konfigurationsdatei



$> cat /etc/backup.cfg

/daten textdokumente abiword/ \
soffice/ word/

/daten spreadsheets gnumeric/ \
excel/

/home/svelt meinhome ./


(page 17)


Zum Nachlesen







(page 18)