Wie löst man sinnvoll folgende Situation, ohne, dass man eine Fehlermeldung erhält: Das Script wird aufgerufen mit zB "testscript 3" oder "testscript A", wobei 3 und A bestimmte Abläufe auslösen. Im Script gibt es dann so was ähnliches wie: if [ $1 -gt 1 -a $1 -lt 4 ]; then ... fi Ich verstehe zwar, warum bei "testscript A" die Fehlermeldung "integer expression expected" kommt, finde aber keine Lösung das zu umgehen. Auch wenn ich "testscript -z 3" und "testscript -b A" (z für Zahl, b für Buchstabe) daraus machen würde, kann ich nicht verhinden, dass bei der Anwendung "testscript -z A" eingegeben wird. Ich muß den Fehler also irgendwie abfangen. Al
Al Bogner
Wie löst man sinnvoll folgende Situation, ohne, dass man eine Fehlermeldung erhält:
Das Script wird aufgerufen mit zB "testscript 3" oder "testscript A", wobei 3 und A bestimmte Abläufe auslösen.
Im Script gibt es dann so was ähnliches wie:
if [ $1 -gt 1 -a $1 -lt 4 ]; then ... fi
Ich verstehe zwar, warum bei "testscript A" die Fehlermeldung "integer expression expected" kommt, finde aber keine Lösung das zu umgehen.
Auch wenn ich "testscript -z 3" und "testscript -b A" (z für Zahl, b für Buchstabe) daraus machen würde, kann ich nicht verhinden, dass bei der Anwendung "testscript -z A" eingegeben wird. Ich muß den Fehler also irgendwie abfangen.
z.B. mit case "x$1" x2 | x3 ) .... ;; xA ) .... ;; * ) Fehler ;; esac oder mittels expr zuerst prüfen ob es sich um eine Zahl oder Buchstaben handelt, und dann weiter: if expr "$1" : '^[0-9]*$' > /dev/null then ... else fi Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 9204871 Fax: +49(721) 24874 Juergen.Vollmer@[informatik-vollmer.de|alumni.uni-karlsruhe.de|acm.org] www.informatik-vollmer.de
Am Donnerstag, 11. Dezember 2003 14:07 schrieb Dr. Jürgen Vollmer:
z.B. mit case "x$1" x2 | x3 ) .... ;; xA ) .... ;; * ) Fehler ;; esac
Ich habe nur ein simples Beispiel angeführt Die ganze Sache ist viel komplexer und daher gefällt mir Vorschlag 2 besser:
oder mittels expr zuerst prüfen ob es sich um eine Zahl oder Buchstaben handelt, und dann weiter:
if expr "$1" : '^[0-9]*$' > /dev/null then ... else fi
Das tut zwar vom Ergebnis das, was ich brauche, bringt aber folgende Fehlermeldung: #!/bin/bash if expr "$1" : '^[0-9]*$' > /dev/null; then echo Zahl else echo Text fi exit -1 expr: warning: unportable BRE: `^[0-9]*$': using `^' as the first character of the basic regular expression is not portable; it is being ignored Ohne ^ ist es für mich brauchbar, aber ich möchte die Fehlermeldung verstehen. Danke! Al
Al Bogner
expr: warning: unportable BRE: `^[0-9]*$': using `^' as the first character of the basic regular expression is not portable; it is being ignored
Ohne ^ ist es für mich brauchbar, aber ich möchte die Fehlermeldung verstehen. Danke!
wie die Meldung sagt: mit einem ^ am Anfang ist es nicht portabel. Man kann's auch weg lassen. ^ steht normalerweise für Linksverankerung des Musters. Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 9204871 Fax: +49(721) 24874 Juergen.Vollmer@[informatik-vollmer.de|alumni.uni-karlsruhe.de|acm.org] www.informatik-vollmer.de
Hallo, Am Thu, 11 Dec 2003, Al Bogner schrieb:
Am Donnerstag, 11. Dezember 2003 14:07 schrieb Dr. Jürgen Vollmer:
z.B. mit case "x$1" x2 | x3 ) .... ;; xA ) .... ;; * ) Fehler ;; esac
case $1 in [0-9]) echo "is num";; [^0-9]) echo "not num";; *) echo Fehler;; esac
if expr "$1" : '^[0-9]*$' > /dev/null; then [..] expr: warning: unportable BRE: `^[0-9]*$': using `^' as the first character of the basic regular expression is not portable; it is being ignored
Ohne ^ ist es für mich brauchbar, aber ich möchte die Fehlermeldung verstehen. Danke!
==== man expr ==== : Perform pattern matching. Its arguments are coerced to strings and the second one is considered to be a regular expression, with a `^' implicitly added at the beginning. ==== -dnh -- FX: A thunderclap, a loud wind, a plague of breakfast cereal, lava flows under the raised-flooring, the earth opens, and Darcy suddenly goes Down, Not Across. A choir of little tentacled things sings, and he achieves Recovery. -- AdB in the monastery
participants (3)
-
Al Bogner
-
David Haller
-
Dr. Jürgen Vollmer