Moin,
in einem Script lese ich mit dialog diverse Parameter ein. Ein Parameter darf nur eine gültige Zahl sein, und zwar eine ganzzahlige Zahl größer 0. Wie teste ich das sinnvoll? Evtl. noch darauf, ob eine max. Obergrenze nicht überschritten wird, wobei das ja dann trivial ist, wenn ich weiß, daß die Eingabe gültig ist.
Andreas
am 22.01.2003, um 13:13:43 +0100 mailte Andreas Kretschmer folgendes:
Moin,
in einem Script lese ich mit dialog diverse Parameter ein. Ein Parameter darf nur eine gültige Zahl sein, und zwar eine ganzzahlige Zahl größer 0. Wie teste ich das sinnvoll? Evtl. noch darauf, ob eine max.
Gelöst.
Ich fand nette Hinweise auf http://www.linuxfibel.de/bashprog.htm
Andreas
Hallo!
Am 22.01.03 schrieb Andreas Kretschmer:
Moin,
in einem Script lese ich mit dialog diverse Parameter ein. Ein Parameter darf nur eine gültige Zahl sein, und zwar eine ganzzahlige Zahl größer 0. Wie teste ich das sinnvoll? Evtl. noch darauf, ob eine max. Obergrenze nicht überschritten wird, wobei das ja dann trivial ist, wenn ich weiß, daß die Eingabe gültig ist.
test "$param" -gt 0 && echo "Zahl ist größer 0"
test "$param" -le 10 && echo "Zahl ist kleiner gleich 0"
Oder nicht?
Ciao, Pitti
Hi,
* Martin Pitt [03-01-23 08:45:05 +0100] wrote:
Am 22.01.03 schrieb Andreas Kretschmer:
in einem Script lese ich mit dialog diverse Parameter ein. Ein Parameter darf nur eine gültige Zahl sein, und zwar eine ganzzahlige Zahl größer 0. Wie teste ich das sinnvoll? Evtl. noch darauf, ob eine max. Obergrenze nicht überschritten wird, wobei das ja dann trivial ist, wenn ich weiß, daß die Eingabe gültig ist.
test "$param" -gt 0 && echo "Zahl ist größer 0"
test "$param" -le 10 && echo "Zahl ist kleiner gleich 0"
Da hast du noch Fehlermeldungen der Shell, falls $param keine Zahl ist. Deshalb braucht man sowas:
,----[ /tmp/0.sh ]- | #!/bin/sh | | if [ "$1" -gt 0 ] && [ "$1" -le 10 ]; then | exit 0 | else | exit 1 | fi `-
,- | pdmef@klaus:~$ /tmp/0.sh foobar 2>/dev/null ; echo $? | 1 `-
...und ein zweites Skript, dass den Exit-Code auswertet. Kann man in der Shell irgendwie pruefen, ob der Wert einer Variable numerisch ist (evtl. noch Typ)?
bye, Rocco
Am 23. Januar 2003 schrieb Rocco Rutte:
Da hast du noch Fehlermeldungen der Shell, falls $param keine Zahl ist. Deshalb braucht man sowas:
Tut's nicht
test 5 -gt aua 2>/dev/null && echo jawoll
Torsten
am 23.01.2003, um 10:01:04 +0100 mailte Rocco Rutte folgendes:
Kann man in der Shell irgendwie pruefen, ob der Wert einer Variable numerisch ist (evtl. noch Typ)?
Ich fand dazu dies:
function CheckRange() { test -z "$1" && return 1 echo "$1" | egrep -q '^[[:space:]]*[+-]?[[:space:]]*[[:digit:]]+[[:space:]]*$' || return 2 [ "$1" -lt "1" -o "$1" -gt "20" ] && return 3; return 0 }
return ist: 0: alles okay 1: leere Variable 2: nicht numerisch 3: außerhalb von 1 und 20 (in diesem Fall)
Andreas
On Thu, 23 Jan 2003 10:01:04 +0100, Rocco Rutte wrote:
Kann man in der Shell irgendwie pruefen, ob der Wert einer Variable numerisch ist (evtl. noch Typ)?
Test von $1 auf numerisch (natürliche Zahl) in bash:
x=`echo "$1"|tr -cd 0-9` [ ${#x} -eq 0 -o ${#1} -ne ${#x} ] && echo -n 'nicht ' echo numerisch
bzw. mit "Gut-Test" und in Schönschrift:
x=`echo "$1"|tr -cd 0-9` if [ ${#x} -gt 0 -a ${#1} -eq ${#x} ]; then echo numerisch else echo nicht numerisch fi
Reinhard
lug-dd@mailman.schlittermann.de