Ich versuche zu überprüfen, ob es sich bei einer Eingabe um eine Ganzzahl handelt, und ich habe sie hundert Mal durchgesehen, sehe aber den Fehler darin nicht. Leider funktioniert es nicht, es löst die if-Anweisung für alle Eingaben (Zahlen / Buchstaben) aus
read scale
if ! [[ "$scale" =~ "^[0-9]+$" ]]
then
echo "Sorry integers only"
fi
Ich habe mit den Zitaten herumgespielt, sie aber entweder verpasst oder sie haben nichts bewirkt. Was mache ich falsch? Gibt es eine einfachere Möglichkeit zu testen, ob eine Eingabe nur ein INTEGER ist?
bash
regular-expression
quoting
test
lonewarrior556
quelle
quelle
scale='^[0-9]+$'; [[ "$scale" == "^[0-9]+$" ]] && echo equal || echo "not equal"
Verwenden Sie den
-eq
Operator des Testbefehls :Es funktioniert nicht nur in
bash
jeder POSIX-Shell, sondern auch in jeder anderen. Aus der POSIX- Testdokumentation :quelle
[[
anstelle des alten Tests verwenden[
.Für vorzeichenlose ganze Zahlen verwende ich:
Tests:
quelle
Da die OP nur positive ganze Zahlen zu wollen scheint:
Beispiele:
Beachten Sie, dass ein einzelner
[
Test erforderlich ist:Dies liegt daran, dass die Dereferenzierung mit
[[
folgenden Elementen erfolgt :quelle
Das prüft und gibt Ihren Fehler aus.
quelle
OPTIND
ist auch hier gut. nur saiyan.quelle