#!/bin/bash
echo "Int. a number"
read num1
echo "Int. another numer"
read num2
if ["$num1"="$num2"]; then
echo "Equals"
else
echo "Dif"
fi
if["$num1"<0]; then
echo "The number $num1 is negative"
else if ["$num2"<0]; then
echo "The number $num2 is negative"
fi
#
Dieser Code funktioniert nicht. Ich habe etwas falsch gemacht, wenn ich sehe, ob die Zahl & lt; 0.
Vielen Dank
quelle
In Bash können Sie numerische Vergleiche mit den bekannten Operatoren durchführen, wenn Sie die arithmetische Auswertung verwenden:
Wie Sie sehen, war ich mit der Verwendung von Leerzeichen ziemlich frei und kann das Dollarzeichen weglassen, wenn ich möchte. Sie sollten sich jedoch dessen bewusst sein:
Zeichenfolgenvergleiche können mit "& lt;" und "& gt;" anstelle von "-lt" und "-gt", wenn Sie doppelte eckige Klammern verwenden. Die Anforderung an Leerzeichen ist bei ihnen die gleiche wie bei einzelnen eckigen Klammern.
Wie Sie im letzten Beispiel sehen können, ist es bei der Verwendung von doppelten eckigen Klammern nicht erforderlich, Variablen in Anführungszeichen zu setzen, um zu verhindern, dass sie null oder nicht gesetzt sind, im Gegensatz zu einfachen eckigen Klammern.
quelle
Die von Ihnen verwendeten Operatoren führen einen Zeichenfolgenvergleich durch. Sie sollten -eq für ganzzahlige Gleichheit, -lt für weniger als usw. verwenden (sie sollten auch von Leerzeichen umgeben sein).
quelle