1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
574
574
EMPFEHLEN
-
Hallo, eigentlich ein simples Scriptchen, macht aber nicht das, was es soll.
Habe alles Mögliche ausprobiert, finde aber den Fehler nicht. Kann mir jemand helfen?
$ cat compare1
#!/bin/ksh
clear
z1=10 ; echo $z1
z2=12 ; echo $z2
if [ $z1 > $z2 ] ; echo $?
then
echo "$z1 is greater than $z2"
else
echo "$z1 is less or equal than $z2"
fi
----------------------------------------------------------
Ausgabe von echo:
10
12
0
10 is greater than 12
-------------------------------------------------------
Was mache ich bloß falsch?
-
02.11.10 10:04 #2
- Registriert seit
- Jun 2007
- Ort
- Passau (Niederbayern)
- Beiträge
- 1.394
Hi kalli0 und herzlich Willkommen hier bei tutorials.de,
Die Zeichen ">" und "<" haben in der Shell eine andere Bedeutung als du vermutest. Die Zeichen dienen nicht als mathematische Vergleichsoperatoren, sondern als Umleiter von diversen Streams (Standardausgabe, Fehlerausgabe, Standardeingabe usw.).
Für einen Vergleich in dem if musst du dir "[" als Programmaufruf vorstellen, welchem du mit den Argumenten sagen kannst was er tun soll (Genau genommen ist "[" ein Symlink auf "test").
In deinem Fall möchtest du einen "Größer als"-Vergleich machen, im Englischen "greater than". Folgendes sollte funktionieren:
Code bash:1
if [ $z1 -gt $z2 ]; then
Weitere Operatoren findest du in der Manpage von test ("man test").
Gruß
BKÜber eine gute Bewertung freut sich jeder ;)
Bitte erledigte Threads als "Erledigt" markieren.
"Though a program be but three lines long, someday it will have to be maintained.''
-- Geoffrey James, "The Tao of Programming"
-
Erstmal Danke für die prompte Antwort. Das war auch nicht meine Idee, sondern wird hier im Rahmen eines Lernprogrammes so publiziert. Was Du meinst kenne ich als redirection of output > oder input <.
Ich hab's probiert und bekomme nun auch einen return code 1. Trotzdem geht es nicht in die else Schleife, sonder gibt brav aus 10 ist greater than twelve ;-(
-
02.11.10 15:27 #4
- Registriert seit
- Jun 2007
- Ort
- Passau (Niederbayern)
- Beiträge
- 1.394
Hi,
also folgendes funktioniert bei mir einwandfrei:
Code bash:1 2 3 4 5
if [ $z1 -gt $z2 ]; then echo "$z1 is greater than $z2" else echo "$z1 is less or equal than $z2" fi
// Edit: Ich denke dass das "echo $?" zwischen dem if und dem then das Problem ist
Gruß
BKÜber eine gute Bewertung freut sich jeder ;)
Bitte erledigte Threads als "Erledigt" markieren.
"Though a program be but three lines long, someday it will have to be maintained.''
-- Geoffrey James, "The Tao of Programming"
-
Jo, danke das war's auch
Ähnliche Themen
-
SQL Abfrage Funktioniert nicht.
Von Splater im Forum Relationale DatenbanksystemeAntworten: 4Letzter Beitrag: 18.01.09, 12:57 -
If-Abfrage funktioniert nicht
Von Grunge im Forum PHPAntworten: 2Letzter Beitrag: 02.07.08, 00:15 -
Sql Abfrage funktioniert nicht...
Von flying-anzi im Forum PHPAntworten: 15Letzter Beitrag: 22.02.08, 13:32 -
If-Abfrage funktioniert nicht so, wie ich will!
Von Danesta im Forum PHPAntworten: 4Letzter Beitrag: 23.01.07, 16:28 -
Abfrage funktioniert nicht
Von corona im Forum PHPAntworten: 4Letzter Beitrag: 04.11.03, 12:12





Zitieren

Login





