ubuntuusers.de

[Gelöst] tutourial? -fehler?

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

Revan

Avatar von Revan

Anmeldungsdatum:
21. Mai 2005

Beiträge: 176

Hallo,
Ich habe vorher, schon unter Windoof batch dateien geschrieben, aber die shell ist ja etwas völlig anders...
Jetzt meine frage: warum funktioniert folgendes script nicht:

if [ $1 = y ]
then
   echo "yes"
else
   echo "no"
fi


und wo gibt es ein gutes shell/bash tutourial?
Danke!

Moderiert von blackbird:

Code Tags gesetzt - bitte nächstes mal selber machen 😉

Moderiert von Boone:

Thread als Gelöst markiert

dusselmann

Anmeldungsdatum:
6. Mai 2005

Beiträge: 1055

Hi,

ein gutes Tutorial findest du hier: http://www.linuxfibel.de/bashprog.htm

Vielleicht funktioniert dein Script nicht, weil du das "y" in Hochkomma setzen musst (ist aber nur ne Vermutung).

Greetz, Dussel

mawe

Anmeldungsdatum:
18. November 2004

Beiträge: 172

Hi!

Was verstehst Du unter "funktioniert nicht"? Gibt's eine Fehlermeldung? Explodiert der Computer? 😉

PS: Sollte auch ohne Hochkomma um y funktionieren.

Gruß, mawe

dusselmann

Anmeldungsdatum:
6. Mai 2005

Beiträge: 1055

mit set -x oder set -xv bekommst du genauere Angaben zum Fehler:

#!/bin/sh
set -xv # xtrace und verbose aktivieren

Revan

(Themenstarter)
Avatar von Revan

Anmeldungsdatum:
21. Mai 2005

Beiträge: 176

Danke für das tutorial,
wenn ich das "y" in '' schreibe, kommt das:
line 3: [y=y]: command not found
no

dusselmann

Anmeldungsdatum:
6. Mai 2005

Beiträge: 1055

jetzt sehe ich es 8) : du solltest mal "-eq" statt "=" verwenden... Nur ne Idee ☺

Revan

(Themenstarter)
Avatar von Revan

Anmeldungsdatum:
21. Mai 2005

Beiträge: 176

danke,
dann kommt:
+ '[y-eq' 'y]'
./man2txt: line 5: [y-eq: command not found
+ echo no
no

dusselmann

Anmeldungsdatum:
6. Mai 2005

Beiträge: 1055

poste nochmal deinen genauen Quelltext... Evtl. Leerzeichen vor dem Minus von -eq vergessen?

Revan

(Themenstarter)
Avatar von Revan

Anmeldungsdatum:
21. Mai 2005

Beiträge: 176

danke,:

#!/bin/bash
#debug mode
set -xv
if [ "$1" -eq "y" ]
then
   echo "yes"
else
   echo "no"
fi

jetzt kommt:

if [ "$1" -eq "y" ]
then
   echo "yes"
else
   echo "no"
fi
+ '[' y -eq y ']'
./man2txt: line 5: [: y: integer expression expected
+ echo no
no

Moderiert von blackbird:

Wieder die Code Tags gesetzt \^^

mawe

Anmeldungsdatum:
18. November 2004

Beiträge: 172

Also bei mir funktioniert

if [ $1 = y ]


Nach [ und vor ] muss ein Leerzeichen stehen.

sslenabled

Anmeldungsdatum:
14. März 2005

Beiträge: 38

Revan hat geschrieben:

if [ "$1" -eq "y" ]

ersetze -eq mit =
-eq ist fuer numerische Vergleiche

fuer Strings Ta
Sslenabled

dusselmann

Anmeldungsdatum:
6. Mai 2005

Beiträge: 1055

sslenabled hat geschrieben:

-eq ist fuer numerische Vergleiche

fuer Strings

wieder was gelernt ☺

Revan

(Themenstarter)
Avatar von Revan

Anmeldungsdatum:
21. Mai 2005

Beiträge: 176

funktioniert, danke!!!!!!!!!

Antworten |