staging.inyokaproject.org

scripte verfassen - gibt es gute tutorials??

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

Ubun-Timo

Anmeldungsdatum:
2. August 2007

Beiträge: 143

hallo!

ich bin noch linux-neuling. drum lese ich zur zeit recht viel in den wikis und arbeite tutorials im netz durch. die meisten, oder: die wichtigsten befehle habe ich nun auch schon durch. problematisch wird es für mich aber, wenn ich kleine scripte verstehen will. die definition der variablen if- und while-schleifen usw. sind für mich leider noch total unverständlich.

drum meine frage an euch: kennt jemand gute tutorials / online-handbücher, die das scriptverfassen gut und mit beispielen erklären??

wäre euch über hinweise, aber auch über tipps, wie man sich an besten an kleine shell-scripte ranwagt, sehr dankbar.

dank + gruß,
timo

Ubun-Timo

(Themenstarter)

Anmeldungsdatum:
2. August 2007

Beiträge: 143

nachtrag:

ich habe z.b. ein tutorial gefunden, dass ok zu sein scheint. es setzt schon recht viel voraus, aber das ileße sich vielleicht noch erarbeiten.

um es zu lernen und zu verstehen, muss ich es immer eintippen, probieren und damit rumspielen.

wenn ich dann aber versuche, bash-zeilen bzw. eingaben zu probieren, erhalte ich eine fehlermeldung im terminal.
zum beispiel bei:

$ first_func() {echo "erste Funktion";} 

erhalte ich die ausgabe:
bash: syntax error near unexpected token {echo' in der linux-fibel ist das beispiel jedoch wie folgt angegeben\\ {{{ser@sonne> first_func() {echo "erste Funktion";} user@sonne> first_func erste Funktion user@sonne> declare -f first_func first_func() { echo "erste Funktion" } }}}ich glaube, dass meine konsole die Klammer {} nicht erkennt.\\ muss ich das terminal mit einer besonderen bash oder so was starten?\\ dann scheinen zudem auch nicht alle befehle übereinzustimmen, zb. "set". damit kann ich in der konsole keine variablen bestimmen. bin für tipps dankbar!

tobiasschulz

Anmeldungsdatum:
31. Mai 2006

Beiträge: 339

$ first_func() {echo "erste Funktion";}
bash: syntax error near unexpected token `{echo'
$ first_func() { echo "erste Funktion"; }
$ first_func
erste Funktion
$ if["a"!="b"]; then echo "a ist nicht b"; fi
bash: syntax error near unexpected token `then'
$ if [ "a" != "b" ]; then echo "a ist nicht b"; fi
a ist nicht b
$ 


verstehst du?

Variablen setzt du mit:

MEINEVAR="1"

Für alle bash´s:

export MEINEVAR="1"

Krondaemon

Anmeldungsdatum:
5. Juni 2006

Beiträge: 356

Kennst Du den Advanced Bash Scripting Guide schon?

- Juergen -

Ubun-Timo

(Themenstarter)

Anmeldungsdatum:
2. August 2007

Beiträge: 143

hallo!

vielen dank für eure hilfe!

@tobias:
jetzt verstehe ich das klammer-problem. was mir nicht so recht einleuchtet ist, wie die variable in diesem fall gesetzt wird. ersetzt "()" hier "=" ???
im zweiten bsp. verstehe ich " != " nicht. gibt es irgendwo eine referenz über alle zeichen für variablen, die für meine shell gilt? habe verschiedene referenzen gefunden, die aber nicht zu 100 % kompatibel sind.

@ Krondaemon: den Advanced Bash Scripting Guide kenne ich noch nicht - aber das wird heute abend nachgeholt - auch wenn es englisch ist 😉 danke dafür ...

tobiasschulz

Anmeldungsdatum:
31. Mai 2006

Beiträge: 339

Ubun-Timo hat geschrieben:

jetzt verstehe ich das klammer-problem. was mir nicht so recht einleuchtet ist, wie die variable in diesem fall gesetzt wird. ersetzt "()" hier "=" ???

Wo? Wo sollte "()" "=" ersetzen?
Die Variable setzt du ganz einfach mit VARIABLENNAME=WERT. Wie in vielen anderen Programmier/Scriptsprachen auch (vereinzelt heisst es auch ":=").

Ubun-Timo

(Themenstarter)

Anmeldungsdatum:
2. August 2007

Beiträge: 143

na hier:

$ first_func() {echo "erste Funktion";}
bash: syntax error near unexpected token `{echo'
$ first_func() { echo "erste Funktion"; }
$ first_func
erste Funktion

oder wie wird hier "first_func" gleichgesetzt mit {echo "erste Funktion";}??

tobiasschulz

Anmeldungsdatum:
31. Mai 2006

Beiträge: 339

Ubun-Timo hat geschrieben:

na hier:

$ first_func() {echo "erste Funktion";}
bash: syntax error near unexpected token `{echo'
$ first_func() { echo "erste Funktion"; }
$ first_func
erste Funktion

oder wie wird hier "first_func" gleichgesetzt mit {echo "erste Funktion";}??

🤣
Es wird nicht "gleichgesetzt". first_func ist der Name der Funktion. Das () soll kennzeichnen, dass es sich um eine Funktionsdeklaration handelt. Bei anderen Sprachen würden die Parameter, die an die Funktion übergeben wurden/werden sollen, zwischen die Klammern geschrieben werden. Hier (bei Shellscripts) ist es praktisch nur ein Erkennungsmerkmal, die Abfrage der Parameter findet mittelks der Variablen $1, $1, ... statt. { kennzeichnet den Anfang des Anweisungsblocks und } das Ende. ; kennzeichnet das Ende einer Anweisung (die Entwerder eion Funktionsaufruf, ein Aufruf eines externen Programms oder eine Deklaration/Definition sein kann). Die " " dürfen nicht vergessen werden, da die Shell das script ansonsten nicht parsen kann.

Ubun-Timo

(Themenstarter)

Anmeldungsdatum:
2. August 2007

Beiträge: 143

ah ... verstehe!
mit "()" könnte ich theoretisch sämtliche funktionen deklarieren. ich muss einfach noch verdammt viel lesen ....

könntest du mir zum abschluss noch verraten, wozu das ";" am ende in der klammer steht?

tobiasschulz

Anmeldungsdatum:
31. Mai 2006

Beiträge: 339

könntest du mir zum abschluss noch verraten, wozu das ";" am ende in der klammer steht?

Ich zitiere mich mal selbst 😉 tobiasschulz hat geschrieben:

; kennzeichnet das Ende einer Anweisung (die Entwerder eion Funktionsaufruf, ein Aufruf eines externen Programms oder eine Deklaration/Definition sein kann).

Ubun-Timo

(Themenstarter)

Anmeldungsdatum:
2. August 2007

Beiträge: 143

oh - das war eine dumme frage! danke dir für deine erklärungen!

da1l6

Avatar von da1l6

Anmeldungsdatum:
29. August 2005

Beiträge: 3825

Noch ein Tutorial zum Thema Bash:
http://www.ibm.com/developerworks/library/l-bash.html

da1l6

Ubun-Timo

(Themenstarter)

Anmeldungsdatum:
2. August 2007

Beiträge: 143

da1|6: super, danke.

Antworten |