Stapelverarbeitungs-Dateien



  • Es müsste unter Linux doch so etwas wie "Stapelverarbeitungs-Dateien" geben
    (gab es früher unter DOS).
    Das sind Dateien, in die man mehrere Befehle mittels eines Editors eintragen kann und dann bei Aufruf dieser Datei alle automatisch abgearbeitet werden.
    Wie geht so etwas unter Linux ?



  • Linux ist doch voll davon!!!!
    Guck dir mal ".profile" oder ".bashrc" an.

    Im Kopf der Datei muss die aufzurufende Shell stehen (z. B. "/bin/sh"):

    #!/bin/sh
    
    Befehl1
    Befehl2
    Befehl3...
    

    Dann "chmod a+x Name_der_Datei" und schon kannst du sie mit "./Name_der_Datei" ausführen.

    Martin



  • Dankeschön !
    Funktioniert.

    Warum muss die aufzurufende Shell angegeben werden ?
    es hat bei mir auch ohne diese Zeile geklappt .



  • ja, aber linux erkennt durch den header, dass es sich um ein shell-script handelt. und die location ist eigentlich standardmässig /bin/sh



  • malabarista schrieb:

    Warum muss die aufzurufende Shell angegeben werden ?
    es hat bei mir auch ohne diese Zeile geklappt .

    Wenn man lieber in der csh "programmiert", trägt man halt die /bin/csh ein. Wer lieber die bash-Syntax mag, nimmt halt diese.

    Die Shell-Skripts sind viel, viel mächtiger, als DOS-Stapelverarbeitungsdateien oder Windows-Scripts! Man nehme z. B. die Zeile

    KERNEL_VERSION=`uname -r`
    

    Hier wird ein Programm (uname) aufgerufen und der Output in der Variablen KERNEL_VERSION gespeichert. Mach' das mal in MS/DOS 😉

    Bei der csh und der bash (bzw. sh) unterscheiden sich vor allem die Schleifen und if-Strukturen:

    csh:
    if ("$1" == "test) then
      ...
    endif
    
    sh:
    if [ "$1" = "test" ]; then
      ...
    fi
    

    (Ich hoffe, das war richtig. War jetzt einfach so aus dem Kopf getippt.)

    Martin

    PS.: Es gibt umfangreiche Bücher, die sich nur mit Skripts unter Linux/Unix befassen.



  • Martin G schrieb:

    (Ich hoffe, das war richtig. War jetzt einfach so aus dem Kopf getippt.)

    Glaub schon; nur beim csh-Skript hast Du ein Anführungszeichen vergessen. 😉



  • malabarista schrieb:

    Warum muss die aufzurufende Shell angegeben werden ?

    weil bash/sh/csh/tcsh usw. nicht nur Shells sind sondern auch Skriptsprachen, mit denen man sehr viele Sachen machen kann. Schau dir unter /bin oder /urs/bin, da gibt viele Skripte und viele Programme sind gerade nur Skripten.

    Ein Skript muss nicht zwingend mit sh oder bash geschrieben werden, es kann ein perl oder php oder python oder oder oder sein. Und damit die Shell dieses Skript ausführt, muss die Shell ihr auch irgendwo mitteilen, was für ein Skript es ist, damit sie die den Quellcode an die Sprache leitet.

    Unter MS-DOS war das nicht nötig, weil DOS ehe sowieso nur command.com kennt und die einzige shell von Microsoft. Ich glaube, andere Firmen haben mal shells für DOS geschrieben aber ich hab noch nie eine andere als command.com gesehen.



  • Dankeschön für die ausführlichen erläuterungen.
    ich habe viel dazugelernt !



  • supertux schrieb:

    weil bash/sh/csh/tcsh usw. nicht nur Shells sind sondern auch Skriptsprachen

    supertux schrieb:

    Und damit die Shell dieses Skript ausführt, muss die Shell ihr auch irgendwo mitteilen, was für ein Skript es ist, damit sie die den Quellcode an die Sprache leitet

    Das heisst nicht Sprache, sondern Interpreter.


Anmelden zum Antworten