Aus Neugier ist es bei einem Bash-Variablen-Vergleich (dessen Wert ist ein integer
) möglich, ihn mit einem vordefinierten Wert zu testen, der entweder als int
oder als deklariert ist string
.
Beispielskript :
#!/bin/bash
f1()
{
[ "$1" == "1" ] && echo "$FUNCNAME: \"1\" compared as string"
}
f2()
{
[[ "$1" -eq 1 ]] && echo "$FUNCNAME: \"1\" compared as int"
}
f1 $1
f2 $1
Ausgabe :
$ ./param.sh 1
f1: "1" compared as string
f2: "1" compared as int
und
$ ./param.sh blah
$
Beide Funktionen verhalten sich gleich, und ich frage mich, ob es beim Überprüfen einer Ganzzahlvariablen einen bevorzugten Weg gibt. Ich würde für die Überprüfung gehen im int
Vergleich zu, int
wie es ist strenger , aber ich frage mich , ob es irgendwelche ziehen Rücken tun es mit string
?
In diesem Fall geht f2()
es auch strenger um den Vergleich, dh das Übergeben eines Dezimalwertes unterbricht diesen, wohingegen f1()
es kein Problem darstellt.