Wie kann ich den Namen der Bash-Skriptdatei im Skript selbst ermitteln?
Wenn mein Skript zum Beispiel in der Datei runme.sh
Wie kann ich dann dafür sorgen, dass die Meldung "Sie führen runme.sh aus" angezeigt wird, ohne dies fest zu kodieren?
Wie kann ich den Namen der Bash-Skriptdatei im Skript selbst ermitteln?
Wenn mein Skript zum Beispiel in der Datei runme.sh
Wie kann ich dann dafür sorgen, dass die Meldung "Sie führen runme.sh aus" angezeigt wird, ohne dies fest zu kodieren?
Re: Tanktalus' (akzeptierte) Antwort oben, eine etwas sauberere Methode ist die Verwendung:
me=$(readlink --canonicalize --no-newline $0)
Wenn Ihr Skript von einem anderen Bash-Skript abgeleitet wurde, können Sie verwenden:
me=$(readlink --canonicalize --no-newline $BASH_SOURCE)
Ich stimme zu, dass es verwirrend wäre, Symlinks zu derefenzieren, wenn man dem Benutzer eine Rückmeldung geben will, aber es gibt Gelegenheiten, bei denen man den kanonischen Namen eines Skripts oder einer anderen Datei braucht, und das ist imo der beste Weg.
this="$(dirname "$(realpath "$BASH_SOURCE")")"
Dies löst symbolische Links auf (realpath macht das), behandelt Leerzeichen (doppelte Anführungszeichen machen das), und findet den aktuellen Skriptnamen, auch wenn er als Quelle (. ./myscript) oder von anderen Skripten aufgerufen wird ($BASH_SOURCE macht das). Nach all dem ist es gut, dies in einer Umgebungsvariablen zur Wiederverwendung oder zum einfachen Kopieren an anderer Stelle zu speichern (this=)...
Wenn Sie ein Shell-Skript aufrufen wie
/home/mike/runme.sh
$0 ist der vollständige Name
/home/mike/runme.sh
basename $0 liefert den Namen der Basisdatei
runme.sh
und Sie müssen diesen Basisnamen in eine Variable wie
filename=$(basename $0)
und fügen Sie Ihren zusätzlichen Text hinzu
echo "You are running $filename"
so dass Ihre Skripte wie
/home/mike/runme.sh
#!/bin/bash
filename=$(basename $0)
echo "You are running $filename"
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
3 Stimmen
Ähnlich [Kann ein Bash-Skript sagen, in welchem Verzeichnis es gespeichert ist?](zu stackoverflow.com/questions/59895/ )
1 Stimmen
Für das Verzeichnis, siehe: Abrufen des Quellverzeichnisses eines Bash-Skripts aus einer .