ubuntuusers.de

Bashfunktionen funktionieren nicht

Status: Gelöst | Ubuntu-Version: Ubuntu 11.04 (Natty Narwhal)
Antworten |

Unix_Samurai

Anmeldungsdatum:
10. Oktober 2008

Beiträge: 661

Hi.

Warum funktioniert das nicht?

1
2
3
4
5
6
7
#! bin/sh

function f0()
 {
	echo f0
	return 0
 }

Error ist

1
2.sh: 3: Syntax error: "(" unexpected

MfG

tobi81

Anmeldungsdatum:
9. Juni 2010

Beiträge: 234

Wohnort: 127.0.0.1

Unix Samurai schrieb:

Warum funktioniert das nicht?

deswegen:

1
#! bin/sh

Am besten durch

#!/bin/bash

ersetzen.

Vain

Avatar von Vain

Anmeldungsdatum:
12. April 2008

Beiträge: 2510

Servus,

mein Liebling: Falsche Shebang. 😉 Das Schlüsselwort „function“ gibt es nur in der Bash. Lass es mal weg. Oder, wenn du ein Bash-Skript schreiben willst, nimm „#!/bin/bash“.

Unix_Samurai

(Themenstarter)

Anmeldungsdatum:
10. Oktober 2008

Beiträge: 661

Endlich kenn ich den anderen Fehler. Ich habe die Skripte immer auf der Konsole per sh aufgerufen, auch wenn im Skript /bin/bash angegeben war. Das beißt sich.

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

😀
Ja klar ! - deshalb predigen wir ja auch hier in jedem 2. Strang, dass man ein Skript ausführt, indem man es "ausführbar" macht, und dann mit seinem Pfad aufruft:

./meinskript

(es sei denn, es liegt im Suchpfad. Dann kann man es direkt mit seinem Namen aufrufen)

LG,

track

Unix_Samurai

(Themenstarter)

Anmeldungsdatum:
10. Oktober 2008

Beiträge: 661

Nun wo Du es gerade ansprichst. Wieso kann man eigentlich manchmal auch Skripte ohne ./ aufrufen, also nur ihren Namen nennen, sofern man natürlich im selben Verzeichnis ist? Denn manchmal geht das nicht.

UbLinTux

Anmeldungsdatum:
7. Dezember 2011

Beiträge: 122

Wenn die Scripte in einem Verzeichnis liegen, welches in $PATH definiert wurde, kann man sie auch ohne ./ aufrufen.

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Eine Datei lesen kannst Du im aktuellen Verzeichnis immer, wenn Du sie mit ihrem Namen aufrufst (und das "lesen"- Recht gesetzt ist).

Ausführen kann man sie nur, wenn sie
1.) zusätzlich das "ausführen"- Recht hat, und wenn sie
2a.) im Suchpfad zu finden ist, nur mit ihrem Namen (wie UbLinTux es beschreibt) oder
2b.) sie mit vollständigem Pfad aufgerufen wird. (es reicht das ./ davor für das aktuelle Verzeichnis)

track

Antworten |