| Operator | Bedeutung | Beispiel |
|---|---|---|
| -eq | gleich == | if [ "$a" -eq "$b" ] |
| -ne | ungleich != | if [ "$a" -ne "$b" ] |
| -gt | größer als > | if [ "$a" -gt "$b" ] |
| -ge | größer gleich >= | if [ "$a" -ge "$b" ] |
| -lt | kleiner als < | if [ "$a" -lt "$b" ] |
| -le | kleiner gleich <= | if [ "$a" -le "$b" ] |
| > | größer als > | (("$a" > "$b")) |
| >= | größer gleich >= | (("$a" >= "$b")) |
| < | kleiner als < | (("$a" < "$b")) |
| <= | kleiner gleich <= | (("$a" <= "$b")) |
Beispiel:
#!/bin/bash echo -n "Wert eingeben: " read a if [[ "$a" -le 10 && "$a" -gt 5 ]]; then echo "5 < $a <= 10" fi
Testen, ob ein Verzeichnis (nicht) existiert:
#!/bin/bash if [[ ! -d "${DIR}" ]]; then mkdir ${DIR} fi
while [ true ]; do ping -c 1 da7a.de; [[ $? == 0 ]] && break; done;
cpu-loop:
#!/bin/bash # cpu-loop t=$1 s=$SECONDS while true; do x=$((SECONDS-s)) [ $x -ge ${t:=1} ] && break done
cpu-loop2:
#!/bin/bash # cpu-loop2 t=${1} t=${t:=3} timeout=$((t*1000000000)) start=$(date +%s%N) timeout_stamp=$((start+timeout)) while true; do x=$(date +%s%N) [ $x -ge ${timeout_stamp} ] && break done
da7a@data ~ $ time cpu-loop 5 real 0m4.899s user 0m4.572s sys 0m0.312s
da7a@data ~ $ time sleep 5 real 0m5.001s user 0m0.000s sys 0m0.000s
$command > /dev/null # nur standard output $command 1> /dev/null # nur standard output $command 2> /dev/null # nur standard error $command &> /dev/null # standard output und standard error
a=b # Variable a enthält String b b=test # Variable b enthält String test eval c="\$$a" # c="\$$a"="$b"="test" ($a wird durch b ersetzt und \$ durch $) # Variable c enthält String test # Wird $b anschließend geändert wirkt sich das nicht auf $c aus.
#!/bin/bash FILEPREFIX=testfile_ STARTDATE=$(date) # Zeit ändert sich während der Laufzeit for (( i=0; i<10; i++ )); do DATE=$(date --date="$STARTDATE $i day ago" touch ${FILEPREFIX}${DATE} -t $DATE done
#!/bin/bash # Version 1.2 (02.03.2006 - 17:44) usage () { echo "Syntax: $0 [dir] [min. Alter (Tage), mtime]" exit $EXITCODE } # Kommandozeilenparameter prüfen: # Parameteranzahl ($#) # Verzeichnis ($1) # Alter ($2) if [ "$#" != "2" ]; then echo "Bitte genau 2 Parameter angeben." EXITCODE=1 usage fi if ! [ -d "$1" ]; then echo "Angegebenes Verzeichnis existiert nicht" EXITCODE=2 usage fi if [ "$2" -le 0 ]; then echo "Zeitangabe ungültig (1..n Tage)" EXITCODE=3 usage fi # Variablen initialisieren ### find Parameter # Pfadtiefe (ausschließlich angegebenes Verzeichnis) FINDPARAM="-maxdepth 1 -mindepth 1" # Zeit (zuletzt modifiziert vor mindestens $2 Tagen) TIME=$(($2-1)) FINDPARAM="$FINDPARAM -mtime +$TIME" # print0 - Dateiname durch 0-Character trennen FINDPARAM="$FINDPARAM -print0" # Ausführen... find $1 $FINDPARAM | xargs -0 rm -f