Shell-Scripting lernen

phos4

Active Member
Hi !

Ich habe mal ein paar Fragen zum Thema Shell-Scripting:

1. Mit welcher Shell fängt man am besten an zu scripten ?
2. Wo sind die Unterschiede zwischen den verschiedenen Shells ?
3. Ich habe gelesen, das man mit der csh nicht scripten soll. Warum soll man das nicht machen ?
4. Gilt das auch für die tcsh ?

Danke schonmal im voraus.

C YA
 
zu 1.: Geschmacksache... :-)

zu 2.: Im wesentlichen unterscheiden sie sich durch ihre Syntax-Konstrukte, von den Konzepten sind sich die shells durchweg ähnlich

zu 3. und 4.: Die Aussage macht so natürlich keinen Sinn, sowohl mit der csh als auch mit der tcsh lässt sich hervorragend "scripten" :-)

ABER: In der *nix Welt gibt es einen Standard namens POSIX (Portable Operating System Interface), der von vielen System von *BSD über Unix bis Solaris, AIX usw. erfüllt wird. Dieser Standard bringt auch eine Shell mit (die POSIX shell wer hätte das gedacht). Diese shell ist sehr nahe an die Bourne bzw. Korn shell angelehnt. Wenn du also shell scripten schreiben willst, die auf vielen Systemen laufen sollen, stehen die Chancen mit der POSIX shell besser...
 
zu 1.: Geschmacksache... :-)
Dann werde ich wohl mit der tcsh anfangen. Damit habe ich schon ein paar Erfahrungen gesammelt.
zu 2.: Im wesentlichen unterscheiden sie sich durch ihre Syntax-Konstrukte, von den Konzepten sind sich die shells durchweg ähnlich
Gibt es denn grosse Unterschiede zwischen den Syntax-Konstrukten ? Ich weiss nur, das die csh und tcsh einen C-Ähnlichen Syntax haben.
zu 3. und 4.: Die Aussage macht so natürlich keinen Sinn, sowohl mit der csh als auch mit der tcsh lässt sich hervorragend "scripten" :-)
http://www.cs.uu.nl/wais/html/na-dir/unix-faq/shell/csh-whynot.html
Dort hatte ich mir die ersten paar Zeilen durchgelesen und dann habe ich einfach mal nachgefragt, weil ich zu müde war um den ganzen Text noch zu lesen.
ABER: In der *nix Welt gibt es einen Standard namens POSIX (Portable Operating System Interface), der von vielen System von *BSD über Unix bis Solaris, AIX usw. erfüllt wird. Dieser Standard bringt auch eine Shell mit (die POSIX shell wer hätte das gedacht). Diese shell ist sehr nahe an die Bourne bzw. Korn shell angelehnt. Wenn du also shell scripten schreiben willst, die auf vielen Systemen laufen sollen, stehen die Chancen mit der POSIX shell besser...
Meine Scripte müssen nicht unbedingt auf vielen Systemen laufen, ich benutze eh nur FreeBSD und Windows 2000.
 
* Original geschrieben von phos4:
> 1. Mit welcher Shell fängt man am besten an zu scripten ?

Die, die Du verwendest oder mit der Du in Zukunft arbeiten willst. Ich
hab hier nur die Zsh, aber meine Scripte laufen auch unter sh, bash,
csh, ksh, ..
POSIX regelt!!!11!

> 2. Wo sind die Unterschiede zwischen den verschiedenen Shells ?

Das willst Du nicht wirklich erklaert haben *g*.
Code:
$ man bash | wc -l
   5676
$ man zshall | wc -l
  18348
$ man csh | wc -l   
   5742
$ man ksh | wc -l 
   4026
$

> 3. Ich habe gelesen, das man mit der csh nicht scripten soll.
> Warum soll man das nicht machen ?

Sagt wer? Man kann mit jeder Shell scripten, aber auf Dauer wuerd ich
Perl dazu verwenden.
 
1. Mit welcher Shell fängt man am besten an zu scripten ?
2. Wo sind die Unterschiede zwischen den verschiedenen Shells ?
3. Ich habe gelesen, das man mit der csh nicht scripten soll. Warum soll man das nicht machen ?
4. Gilt das auch für die tcsh ?

Du kannst in deinen Scripts auch angeben, unter welcher Shell die gestartet werden sollen, egal, welche Shell du selbst verwendest. Allerdings müssen diese Shells zumindest auf deinem System installiert sein:

Schreib einfach als erste Zeile

Code:
#!/bin/sh

oder

Code:
#!/bin/bash

usw. (je nach verwendeter Shell)
 
Die, die Du verwendest oder mit der Du in Zukunft arbeiten willst. Ich
hab hier nur die Zsh, aber meine Scripte laufen auch unter sh, bash,
csh, ksh, ..
POSIX regelt!!!11!
Die zsh werde ich mir mal etwas genauer angucken. Ich habe bis jetzt eigentlich nur gutes über diese Shell gelesen.
Das willst Du nicht wirklich erklaert haben *g*.
Code:
$ man bash | wc -l
   5676
$ man zshall | wc -l
  18348
$ man csh | wc -l   
   5742
$ man ksh | wc -l 
   4026
$
Da hast du Recht.
Manchmal kann es auch Nachteile haben, wenn man ein gut dokumentiertes System benutzt.
Sagt wer? Man kann mit jeder Shell scripten, aber auf Dauer wuerd ich
Perl dazu verwenden.
http://www.cs.uu.nl/wais/html/na-dir/unix-faq/shell/csh-whynot.html
Dort habe ich das gelesen. Allerdings bin ich noch nicht dazu gekommen, den ganzen Text durchzulesen.
Perl kann ich leider noch nicht. Das wird auch bestimmt noch ein bisschen dauern bis ich mich damit beschäftige. Jetzt sind erstmal die Shells dran.
Du kannst in deinen Scripts auch angeben, unter welcher Shell die gestartet werden sollen, egal, welche Shell du selbst verwendest. Allerdings müssen diese Shells zumindest auf deinem System installiert sein:

Schreib einfach als erste Zeile
Code:
#!/bin/sh
oder
Code:
#!/bin/bash
usw. (je nach verwendeter Shell)
So weit bin ich auch schon gekommen. Ich habe ja selber schon ein paar kleine Scripte geschrieben.
 
Zuletzt bearbeitet:
Auch wer die bash als Shell benutzt, sollte seine Scripte
immer erstmal als /bin/sh schreiben. Die meisten Vorzüge
der Bash liegen in der interaktiven Bedienung, in der
Scriptsprache sind die Unterschiede eher gering.

Ich bekomme immer sooo einen Hals, wenn ich ein
Linux-Kiddie Script sehe, das mit /bin/bash anfängt,
nur weil das unter Linux so ist. Bei mir gibt es keine
bash und wenn, dann wäre die unter /usr/local/bin zu
finden.

Was das Scripten mit (t)csh angeht (für interaktiv benutze
ich auch die tcsh), da gibt es schon einige sehr gute Gründe.

- Ausgabeumlenkungen: In der csh kannst Du nur entweder
stdout oder stdout+stderr kombiniert umleiten. In Bourne
Shell kannst Du mit "1> log.stdout 2> log.stderr" trennen.

- Shellfunktionen

- Traps.
 
Zurück
Oben