Shell - Script - if

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
snoop_hallo
Beiträge: 110
Registriert: 29.03.2005 19:24:45
Kontaktdaten:

Shell - Script - if

Beitrag von snoop_hallo » 11.11.2005 07:33:21

Ich habe ein Shellscript mit einer if Anweisung geschrieben. Allerdings gibt es dabei einige Probleme, also es wird nicht richtig angenommen. Kann vielleicht jemand mal drüber schauen und vielleicht sagen wo der fehler liegen könnte.

Code: Alles auswählen

b = 6
if [ $b -ge 5]; then
echo "test"
else
echo "test2"
fi

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 11.11.2005 07:43:12

verschoben von Grundsatzfragen

Gruß Savar

PS:

bei den [ ] muss IMMER ein Leerzeichen sein und beim Verwenden einer Variablen, darf KEIN Leerzeichen zwischen Variablenname und dem Gleichheitszeichen, bzw. zws. = und dem Wert sein:

Code: Alles auswählen

b=6
if [ $b -ge 5 ]; then
echo "test"
else
echo "test2"
fi
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

snoop_hallo
Beiträge: 110
Registriert: 29.03.2005 19:24:45
Kontaktdaten:

Beitrag von snoop_hallo » 11.11.2005 07:51:46

Okay das war eben mein Fehler, die leerzeichen oder keine leerzeichen sind alle richtig gesetzt, allerdings kommt es immer noch zu fehlern und es wird nicht richtig ausgeführt.

Maj0r
Beiträge: 476
Registriert: 08.12.2003 14:52:39
Wohnort: Jüchen, Ne
Kontaktdaten:

Beitrag von Maj0r » 11.11.2005 08:27:00

snoop_hallo hat geschrieben:Okay das war eben mein Fehler, die leerzeichen oder keine leerzeichen sind alle richtig gesetzt, allerdings kommt es immer noch zu fehlern und es wird nicht richtig ausgeführt.
Wenn Du uns dumm sterben lassen willst, können wir das auch :lol:

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 11.11.2005 12:57:33

Poste den entsprechenden Teil mal bitte UND sag was du für Fehler bekommst..
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 11.11.2005 14:55:26

*Glaskugel hervorhol*
Sie werden in naher Zukunft eine interessante Bekanntschaft machen. Das und, der Fehler liegt in Zeile 3... nein, Moment... 7!

snoop_hallo
Beiträge: 110
Registriert: 29.03.2005 19:24:45
Kontaktdaten:

Beitrag von snoop_hallo » 12.11.2005 09:05:48

Das Script

Code: Alles auswählen

#!/bin/sh
 test=0.69

 if [ $test -gt 2.00 ]; then
 echo "Richtig"
 else
 echo "falsch"
 fi
Die Fehlermeldung

Code: Alles auswählen

line 5: [: 0.69: integer expression expected falsch

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 12.11.2005 09:12:14

steht doch da, welches Problem das ist... die Bash kann nur Ganzzahlen.. also keine Kommazahlen (bzw. natürlich keine Punktzahlen, da wir ja englische Schreibweisen nutzen müssen)...
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Benutzeravatar
Cloonix
Beiträge: 589
Registriert: 20.11.2004 10:42:24
Wohnort: München
Kontaktdaten:

Beitrag von Cloonix » 12.11.2005 09:14:29

Du kannst nur Deziamlzahlen ohne Nachkommawerte verwenden.

Außerdem empfiehlt es sich alle Variablen in "" zu setzen.

MfG
proud to be 100% M$ free (except X300T)
http://claus.freakempire.de
http://debian.freakempire.de

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 12.11.2005 18:06:52

Das Programm "bc" kann sowas.

Code: Alles auswählen

peschmae@sid:~$ echo "1.32 < 3.14" | bc -q
1
peschmae@sid:~$ echo "51.32 < 3.14" | bc -q
0
peschmae@sid:~$ echo "3.14 < 3.14" | bc -q
0
peschmae@sid:~$ echo "3.13 < 3.14" | bc -q
1
Also:

Code: Alles auswählen

Z1="3.14"
Z2="1.27"
if [ $(echo "$Z1 < $Z2" | bc -q) -eq 1 ]; then
  echo gut
else
  echo pöse
fi


MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Antworten