Perché bash usa -ge per confrontare invece di ==?


0

Quindi sto cercando di aggiungere un avviso di spazio su disco rigido insufficiente al mio server di casa. Mi piace l'aspetto di quanto segue che viene da qui :

ADMIN="yourmail@example.com"
# set alert-level 90 % standard
ALERT=10
df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $6 }' | while read output;
do
  usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1  )
  partition=$(echo $output | awk '{ print $2 }' )
  if [ $usep -ge $ALERT ]; then
    echo "space low on \"$partition ($usep%)\", on server $(hostname) at $(date)" |
 mail -s "Alert: Free space low, $usep % used on $partition" $ADMIN
  fi
done

Poiché trovo prudente comprendere qualsiasi script che esegui prima di eseguirlo, ho esaminato le pagine man per capire come funziona ciascuna delle singole sezioni del programma e sembra abbastanza semplice. L'unica cosa che non capisco è la -gebandiera nell'istruzione ifcondizionale. Secondo la bash introduzione a if page , entrambi sarebbero valutati su true se il "file esiste". In che modo questa logica passa vera quando sto confrontando due variabili? In altri linguaggi di programmazione userei la ==sintassi. Allo stesso modo perché stiamo confrontando i valori di 90(come riportato da df) con 10cui è la variabile diALERT, Suppongo che questo abbia qualcosa a che fare con il modo in cui il condizionale valuta? Non ho motivo di credere che questo codice non funzionerà, vorrei solo sapere perché prima di aggiungerlo a uno script.

Grazie.


2
In questo contesto -ge significa maggiore o uguale a. Vedi l'ultimo paragrafo qui: gnu.org/software/bash/manual/html_node/…
Argonauts,

Cosa dice la linea di eco che sta facendo?
casuale

@Argonauts sembra che non sia sceso abbastanza lontano, grazie eccellente
Scott,

Forse non è bash, forse è sh / dash (non credo che dash usi ==)
Xen2050
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.