if [[ <expression> ]];
then
<body>
elif [[ <expression> ]];
then
<body>
fi
[[ ist eigentlich ein Programm, dass je nachdem 0 (true) oder 1 (false) zurückgibt und ]] als letztes Argument erwartet
Achtung: if [[ 0 ]]; ist true!
[[ -z <string> ]] # Leerer String
[[ -n <string> ]] # Nicht-leerer String
[[ <stringA> == <stringB> ]] # Gleiche Strings
[[ <stringA> != <stringB> ]] # Ungleiche Strings
[[ <stringA> =~ <Regexp> ]] # StringA Match auf Regexp (ohne '/')
[[ <numberA> -eq <numberB> ]] # Gleiche Nummern
[[ <numberA> -ne <numberB> ]] # Ungleiche Nummern
[[ <numberA> -lt <numberB> ]] # NumberA < NumberB
[[ <numberA> -le <numberB> ]] # NumberA <= NumberB
[[ <numberA> -gt <numberB> ]] # NumberA > NumberB
[[ <numberA> -ge <numberB> ]] # NumberA >= NumberB
# Alternative mit (()):
(( <number> < <number> ))
[[ -e <file> ]] # File existiert
[[ -r <file> ]] # File ist lesbar
[[ -w <file> ]] # File ist schreibbar
[[ -x <file> ]] # File ist ausführbar
[[ -h <file> ]] # File ist ein Symlink
[[ -d <file> ]] # File ist ein Directory
[[ -s <file> ]] # File ist > 0 bytes
[[ -f <file> ]] # File ist eine File
[[ <fileA> -nt <fileB> ]] # FileA ist neuer als FileB
[[ <fileA> -ot <fileB> ]] # FileA ist älter als FileB
[[ <fileA> -ef <fileB> ]] # FileA und FileB sind die selbe Datei
Bei allen Vergleichen sind, wie gewohnt, Kombinationen mit && und ||, sowie negieren mit ! (Achtung: Leerzeichen!) möglich
<command> && <command><command> || <command>