PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Numerischer-Vergleich [BASH]



ExeCRabLE
12-08-2003, 09:53
Moin zusammen,

ich möchte in einer If-Abfrage abfragen, ob der Wert in einer Variable numerisch ist.

Könnt ihr mir dabei weiterhelfen ?

cu
ExeCRabLE

Hans-Georg Normann
12-08-2003, 14:06
weiß selbst keinen direkten Weg, aber du kannst ja die Variablen mit test und den Optionen ne, gt, lt, etc. ansprechen. Wenn deine Variable nicht numerisch ist, erfolgt eine Fehlerausgabe, welche du ausweten kannst.

Hans

Hans-Georg Normann
14-08-2003, 17:35
wenn man PHP instaliiert hat ists OK, aber wenn man das Script auf fremden Rechnern laufen läßt, wirds kompliziert. Bleiben nach meiner Auffassung nur folgende Wege


wie Eingangs von mir beschrieben
mit awk. Da kann man ja Zeichenketten beliebig zerlegen und untersuchen
mit cut. Wie awk, aber eben mehr auf Shellebene


Alles nicht der Hammer, aber durchführbar hier mal eine Beispiel, wie cut angewendet werden könnte
[hans@rosi my]$ echo 123| cut --bytes=2
2

tomes
14-08-2003, 19:27
Wo eine Shell ist, ist meist auch Perl ;)
Daher :


#!/bin/sh
# Test auf numeric
TE="1"
NUM=$(perl -e "print $TE*1;")
if [ -z $NUM ]; then
echo "keine Zahl"
else
echo "eine Zahl"
fi



T;o)Mes

TheDodger
19-08-2003, 06:31
Original geschrieben von tomes
Wo eine Shell ist, ist meist auch Perl ;)
Träum weiter :D
Auf keinen der von mir administrierten Server ist ein Perl installiert.
Wozu auch?

tomes
19-08-2003, 19:07
Wozu auch? [/B]
Webserver --> cgi
Mailserver --> spamassasin

Und auch sonst noch ganz nuetzlich. ;)

Also nur fuer dich :D -->


#!/bin/sh

D=$(( $1*1 ))
if [ $1 == "0" ]; then
echo "Variable ist 0"
else
if [ $D -eq "0" ]; then
echo "Variable ist keine Zahl"
else
echo "Variable ist eine Zahl"
fi
fi

echo $D

Kann sein, dass es bei irgend einer Variable nicht "funct". Habe nur mit ganzen Zahlen, 0 und Buchstabenfolgen getestet.
Aber es ist auf alle Faelle ein Anfang.

T;o)Mes

P.S.: Wenn du kannst, schreib dir ein kleines C/C++ *prog* was nur die numeric ueberprueft (Vielleicht gibt es ja auch so etwas)