Warum verwendet bash -ge anstelle von == mit -ge?

460
Scott

Daher möchte ich meinem Home-Server eine Warnung bezüglich zu wenig Festplattenspeicher hinzufügen. Ich mag das Aussehen des Folgenden, das von hier kommt :

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 

Da ich es klug finde, jedes Skript zu verstehen, das Sie ausführen, bevor Sie es tatsächlich ausführen, habe ich mir die Manpages angesehen, um herauszufinden, wie die einzelnen Abschnitte des Programms funktionieren, und es scheint ziemlich einfach zu sein. Das einzige, was ich nicht verstehe, ist das -geFlag in der ifBedingungsanweisung. Gemäß der bash- Einführung von if page würden diese beiden Werte in true ausgewertet, wenn die "Datei existiert". Wie wird diese Logik wahr, wenn ich zwei Variablen vergleiche? In anderen Programmiersprachen würde ich ==Syntax verwenden. In ähnlicher Weise, warum vergleichen wir die Werte von 90(wie von df gemeldet) mit 10der Variablen vonALERTIch nehme an, das hat etwas damit zu tun, wie die Bedingungen bewertet werden. Ich habe keinen Grund zu der Annahme, dass dieser Code nicht funktioniert. Ich möchte nur wissen, warum, bevor er zu einem Skript hinzugefügt wird.

Vielen Dank.

0
In diesem Zusammenhang bedeutet das -ge größer oder gleich. Siehe den letzten Absatz hier: http://www.gnu.org/software/bash/manual/html_node/Bash-Conditional-Expressions.html Argonauts vor 7 Jahren 2
Was sagt die Echoleitung? random vor 7 Jahren 0
@Argonauts scheint, ich bin nicht weit genug gescrollt, danke Scott vor 7 Jahren 0
Vielleicht ist es nicht bash, vielleicht ist es sh / dash (ich denke nicht, _think_ dash verwendet `==`) Xen2050 vor 7 Jahren 0

0 Antworten auf die Frage