PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit der Bash (Typprobleme?)



d@tenmaulwurf
12-03-2006, 11:55
Hallo!

Ich wollte einen einfach größer/kleiner.vergleich in der Bash mit einem Datum machen. Dieser sah so aus:

if [ `date "+%k"` > 24 ]; then echo "das datum ist groesser als 24"; fi;

In der Theorie müsste ja NICHTS ausgegeben werden, da (da %k laut manpage von 0 bis 23 ausgibt).

Ich erhalte aber immer ein TRUE auf diese Abfrage. Ich kann statt der 24 auch 9999999999 einsetzen und erhalte immernoch ein TRUE.

Woran liegt das?

Die erste Idee ist ein Typproblem, aber wie behebe ich das?

Vielen Dank im voraus und einen schönen Sonntag noch,

d@tenmaulwurf

peschmae
12-03-2006, 12:00
[ entspricht dem Progrämmchen "test". Und das Progrämmchen Test kann mit > nichts anfangen.
Standardmässig guckt test ob der String leer ist oder nicht (ist er nicht, also true...).

Zugegebenermassen ist das nicht ganz extrem intuitiv :D

Was du möchtest ist:

if [`date +%k` -gt 24 ]

Für weiteres: man test

MfG Peschmä

d@tenmaulwurf
12-03-2006, 12:12
*$%#&*

Ich Depp, ja - der Samstag war wohl bissl zu lang -.-

Vielen Dank dir!

Joghurt
20-03-2006, 12:06
[ entspricht dem Progrämmchen "test". Und das Progrämmchen Test kann mit > nichts anfangen.Kann es schon, nur wird das ">" halt von der Shell interpretiert. Man kann > escapen (gt ist aber lesbarer)


if [ 10 \> 9 ]; then echo "Hier war noch kein Marketingmensch am Werk!"; fi

peschmae
20-03-2006, 17:31
Funktioniert bei mir aber nicht:


peschmae@sid:~$ if [ 10 \> 9 ]; then echo true; else echo false; fi
false
peschmae@sid:~$ if [ 8 \> 9 ]; then echo true; else echo false; fi
false
peschmae@sid:~$


steht bei mir auch nichts entsprechendes in der Manpage. Das false ist wohl auch eher ein false wie in "ist nicht null Zeichen lang"

MfG Peschmä

Joghurt
20-03-2006, 18:04
Oops, ja, du hast recht. Ich hab nur mir nur $? anzeigen lassen. Und bin irgendwie durcheinander gekommen.

Ich nehme also alles zurück und behaupte das Gegenteil.