Jaja schon wieder Bash :DIch vergesse einfach ständig die Syntax und aufschreiben ist das Einzige das ein bisschen hilft.
Mal „unter uns“: Bash ist auch eine der anstrengensten Skriptsprachen überhaupt …
Also diesmal geht es um IF Conditions. Grundsätzlich funtkioniert es wie folgt:
if [ <condition> ]then
…
elif [ <condition> ]
then
…
else
…
fi
Das allein finde ich schon unintuitiv: „elif“ statt „else if“ und then in einer neuen Zeile. Alternativ kann man auch „; then“ in der gleichen Zeile schreiben. Abgeschlossen wird das ganze mit „if“ rückwärts, also „fi“. Aufpassen, denn die Leerzeichen vor und nach den Klammern sind nicht optional!
Nun nun zu den Conditions:
- [ -e filepath ] wird true wenn die Datei existiert.
- [ -x filepath ] wird true wenn die Datei existiert und ausführbar ist.
- [ -S filepath ] wird true wenn die Datei existiert und eine Socket-Datei ist.
- [ -d filepath ] wird true wenn die Datei existiert und ein Verzeichnis ist.
- [ -w filepath ] wird true wenn die Datei existiert und schreibbar ist.
- [ expr1 -a expr2 ] entspricht dem logischen AND (Java: &&)
- [ expr1 -o expr2 ] entspricht dem lofischen OR (Java: || )
- [ -n $VARIABLE ] wird true wenn die Varable (also der String) nicht leer ist.
- [ -z $VARIABLE ] wird true wenn die Varable (also der String) leer ist (Java: „foo“.isEmpty() ).
- [ $VARIABLE = $VARIABLE2 ] wird true wenn die beiden Variablen gleich sind (Java: „foo“.equals(„foo“) ).
ACHTUNG: Das funktioniert nur mit Strings und nicht mit Zahlen und ist Case-Sensitiv. - [ $VARIABLE -eq $VARIABLE2 ] wird true wenn die beiden Variablen die gleich Zahl enthalten (Java: == ).
- [ $VARIABLE -lt $VARIABLE2 ] wird true wenn die 1. Variable kleiner ist (Java: < ).
- [ $VARIABLE -gt $VARIABLE2 ] wird true wenn die 1. Variable größer ist (Java: > ).
- [ $VARIABLE -le $VARIABLE2 ] wird true wenn die 1. Variable kleiner oder gleich ist (Java: <= ).
- [ $VARIABLE -ge $VARIABLE2 ] wird true wenn die 1. Variable gößer oder gleich ist (Java: >= ).
- [ $VARIABLE -ne $VARIABLE2 ] wird true wenn die beiden Variablen ungleich sind (Java: != ).
- [ ! <condition> ] negiert die condition (Java: ! ).
Es gibt noch einige mehr, aber ich denke das sind die Wichtigsten.
Quellen:
http://wiki.ubuntuusers.de/Shell/Bash-Skripting-Guide_f%C3%BCr_Anf%C3%A4nger
http://www.thegeekstuff.com/2010/06/bash-conditional-expression/