[linux-l] Datum in Script verwenden

Volker Grabsch vog at notjusthosting.com
Mo Apr 9 12:21:09 CEST 2007


Hi Pascal,

ich muss jetzt leider wieder einmal mit der alten Leier kommen ...
probiert eure Sachen bitte vorher selbst aus!

Ich verstehe einfach nicht, wie man auch nur auf die *Idee* kommen
kann, man könne in einer so komplexen und verwobenen Sprache
wie Shell-Script auf Anhieb irgendwas Fehlerfreies produzieren,
und dass die 5 Sekunden Copy&Paste in die Kommandozeile den Aufwand
nicht wert seien.

Das gilt ganz besonders dann, wenn man Anfängern etwas erklären will.


On Sun, Apr 08, 2007 at 02:44:34PM +0200, Pascal Volk wrote:
> > > welches das Skript mit dem Programm startet, das man auch über 'which ruby'
> > > erhalten würde.
> > 
> > Entschuldigung wenn die Frage doof ist, aber was ist, wenn "env" irgendwo anders
> > ist? Wäre nicht
> >     `which ruby` << ...
> > oder ähnliches besser?
> 
> Ähnliches ist eher besser, das mit which ist ein Schuss in den Ofen:
>     cat >> testscript << "EOF"
>     #!`which bash`
>     echo "hallo"
>     EOF

Zur Erklärung: Dieser Befehl soll vermutlich eine Datei namens "testscript"
erstellen mit folgendem Inhalt:

    #!`which bash`
    echo "hallo"

Was er aber tatsächlich tut: Er hängt folgende Zeilen an eine Datei
namens "testscript" an:

    #!/bin/bash
    echo "hallo"

In der "<< EOF"-Konstruktion werden nämlich Backticks und Variablen,
also `irgendwas` und $irgendwas, schon vorher ersetzt.

Das ist übrigens sehr praktisch, weil man dadurch per Shell-Script
ein einfaches Template-System realisieren kann.

>     chmod u+x testscript
>     ./testscript
>     bash: ./testscript: `which: bad interpreter: No such file or directory

Ironischerweise würde das Zeug, so wie du es geschrieben hast, sogar
funktionieren, weil dein Erstell-Befehl in Wirklichkeit eine
"#!/bin/bash"-Zeile produziert. ;-)

> Wenn which nicht in /usr/bin ist, dann sollte man wohl davon ausgehen, dass
       ^^^^^
> das System kaputt ist.

Du meinst hier "env", nicht "which", richtig?

> rm -Rfv /tmp/../ && echo "are you sure???"

*gg* der ist gut! Ist mir erst jetzt in deiner Sig aufgefallen.


Viele Grüße,

    Volker

-- 
Volker Grabsch
---<<(())>>---
Administrator
NotJustHosting GbR



Mehr Informationen über die Mailingliste linux-l