Archiv verlassen und diese Seite im Standarddesign anzeigen : Unix shell wie feststellen ob Variable eine Zahl ist?
Hi,
wie lässt sich mit der shell feststellen ob eine Variable eine Zahl ist?
mfg
wdsl
peschmae
05-01-2007, 18:48
Holzhammermethode :D :
peschmae@sid:~$ I=3
peschmae@sid:~$ if [ $I -eq 0 -o $I -ne 0 ]; then echo true; else echo false; fi
true
peschmae@sid:~$ I=3a
peschmae@sid:~$ if [ $I -eq 0 -o $I -ne 0 ]; then echo true; else echo false; fi
bash: [: 3a: integer expression expected
false
peschmae@sid:~$
Wobei die ist wirklich blöd. Nur die erste Idee. Zweite Variante - grep, schon etwas weniger doof *g*:
peschmae@sid:~$ I=31284
peschmae@sid:~$ echo $I | grep -q -e "^[0-9][0-9]*$"
peschmae@sid:~$ echo $?
0
peschmae@sid:~$ I=31284a812
peschmae@sid:~$ echo $I | grep -q -e "^[0-9][0-9]*$"
peschmae@sid:~$ echo $?
1
kannst du dann in dem Stil verwenden:
if echo $I | grep -q -e "^[0-9][0-9]*$"; then
echo zahl;
else
echo keinezahl;
fi
MfG Peschmä
fällt dir sonst noch was ein?
I=ja;if [ $I -eq 0 -o $I -ne 0 ]; then echo true; else echo false; fi
gibt true zurück auf Solaris
und grep mit der Option -e kann ich nicht bzw nur sehr ungern verwenden.
mfg
wdsl
peschmae
08-01-2007, 16:16
...
gibt true zurück auf Solaris
Ich ging jetzt mal vom GNU-Zeugs aus.
und grep mit der Option -e kann ich nicht bzw nur sehr ungern verwenden.
Geht auch ohne das -e. Zumindest mit gnu grep. Das -e ist nur so ein Reflex bei mir.
MfG Peschmä
Thomas Engelke
10-01-2007, 10:23
Sollte grep nicht Quantifizierer kennen? Also anstatt
^[0-9][0-9]*$
lieber
^[0-9]{1,}$
oder am Besten
^[0-9]+$
?
peschmae
10-01-2007, 11:35
Dachte ich eigentlich auch, nur ging das irgendwie nicht. Jetzt hab ichs noch mal schnell getestet und bin dank txt2regex auf die Idee gekommen, das + extra zu escapen - damit gehts dann:
grep -q "^[0-9]\+$"
MfG Peschmä
Hallo,
wie wäre es damit ?
Gruss zst
EING=$1
case $EING in
'' | *[!0-9]* ) echo -e "$EING ist keine Zahl!" ; exit 1 ;;
*) ;;
esac
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.