Einfache Bash-Script Frage

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
petiz
Beiträge: 61
Registriert: 19.04.2009 13:10:10
Wohnort: Hannover

Einfache Bash-Script Frage

Beitrag von petiz » 25.05.2015 15:31:24

Hallo,

ich habe eine --vermutlich-- wieder super-einfache BASH-Script Frage,

Folgendes Script ist gegeben:

Code: Alles auswählen

#!/bin/bash

echo "Does the vhost already exist? (Enter \"no\" for new entry)"
read test

if [ "$test" == "no" ]
then
	echo "jump into if"
else
	echo "dont jump"
fi


Das Script enthält einen Syntax-Fehler... egal was ich für die Variable "test" eingebe, bekomme ich jedesmal "Befehl XYZ nicht gefunden".

Ich verstehe es nicht, da ich mich exakt an die Vorgabe von:
http://wiki.ubuntuusers.de/Shell/Bash-S ... %C3%A4nger
gehalten habe ...

auch auf die notwendigen Leerzeichen habe ich geachtet...



Danke für eure Hilfe!

Liffi
Beiträge: 2345
Registriert: 02.10.2004 01:33:05

Re: Einfache Bash-Script Frage

Beitrag von Liffi » 25.05.2015 16:10:00

Ich habe den Text so kopiert und laufen lassen: bei mir funktioniert es.

Benutzeravatar
smutbert
Beiträge: 8342
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Einfache Bash-Script Frage

Beitrag von smutbert » 25.05.2015 16:12:31

Wann kommt die Fehlermeldung (gleich nach dem Aufruf des Skriptes noch vor der Frage ob der vhost bereits existiert)?
Wie lautet denn die Fehlermeldung genau?

petiz
Beiträge: 61
Registriert: 19.04.2009 13:10:10
Wohnort: Hannover

Re: Einfache Bash-Script Frage

Beitrag von petiz » 25.05.2015 16:36:27

ok jetzt wird es ganz verrückt, wenn ich meinen eigenen Code kopiere und ausführe, funktioniert es bei mir auch.


Das ist der Fehler der mit der Ursprungs-Datei auftritt:

Code: Alles auswählen

peter@peter-macbook ~/Shell-Scripte/local $ bash peter.sh
Does the vhost already exist? (Enter "no" for new entry)
test
peter.sh: Zeile 6: [ test: Befehl nicht gefunden
dont jump

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Einfache Bash-Script Frage

Beitrag von Cae » 25.05.2015 20:02:19

Es ist denkbar, dass das Zeichen zwischen [ und "$test" kein valides Whitespace (Space, Tab) ist, sondern z.B. ein   oder aehnliche Spielarten. Die Fehlermeldung besagt, dass "[ test" nicht ausfuehrbar ist, hier muss man genau hinschauen: Es sind zwei Worte! Die Shell versucht also beides auszufuehren. Beispiel:

Code: Alles auswählen

$ [ foo ]; echo $?
0
$ '[ foo' ]; echo $?
sh: 2: [ foo: not found
127
$ 
Ausserdem verwendest du den bei [ invaliden Operator ==, welcher nur in der Bash bei Verwendung von [[ gueltig ist.

Uebrigens gibt es fuer (ggf. komplexere) Abfragen auch ein Bash-Builtin namens select:

Code: Alles auswählen

$ select food in Apfel Birne 'Bananen und Hamburger' exit; do echo "$food"; [ x"$food" = xexit ] && break; done
1) Apfel
2) Birne
3) Bananen und Hamburger
4) exit
#? 3
Bananen und Hamburger
#? 4
exit
$ 
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Antworten