771 Stimmen

Wie erkenne ich den Namen der Skriptdatei in einem Bash-Skript?

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?

3 Stimmen

Ähnlich [Kann ein Bash-Skript sagen, in welchem Verzeichnis es gespeichert ist?](zu stackoverflow.com/questions/59895/ )

1 Stimmen

3voto

Kurz, klar und einfach, in my_script.sh

#!/bin/bash

running_file_name=$(basename "$0")

echo "You are running '$running_file_name' file."

Ausgesprochen:

./my_script.sh
You are running 'my_script.sh' file.

2voto

ecwpz91 Punkte 1317
echo "$(basename "`test -L ${BASH_SOURCE[0]} \
                   && readlink ${BASH_SOURCE[0]} \
                   || echo ${BASH_SOURCE[0]}`")"

2voto

rashok Punkte 11608

Unter bash können Sie den Namen der Skriptdatei mit $0 . Im Allgemeinen $1 , $2 usw. sind für den Zugriff auf CLI-Argumente. Ähnlich $0 ist der Zugriff auf den Namen, der das Skript auslöst (Name der Skriptdatei).

#!/bin/bash
echo "You are running $0"
...
...

Wenn Sie das Skript mit einem Pfad wie /path/to/script.sh では $0 gibt auch den Dateinamen mit Pfad an. In diesem Fall müssen Sie $(basename $0) um nur den Namen der Skriptdatei zu erhalten.

1voto

linxuser Punkte 17

Informationen dank Bill Hernandez. Ich habe einige Einstellungen hinzugefügt, die ich annehme.

#!/bin/bash
function Usage(){
    echo " Usage: show_parameters [ arg1 ][ arg2 ]"
}
[[ ${#2} -eq 0 ]] && Usage || {
    echo
    echo "# arguments called with ---->  ${@}     "
    echo "# \$1 ----------------------->  $1       "
    echo "# \$2 ----------------------->  $2       "
    echo "# path to me --------------->  ${0}     " | sed "s/$USER/\$USER/g"
    echo "# parent path -------------->  ${0%/*}  " | sed "s/$USER/\$USER/g"
    echo "# my name ------------------>  ${0##*/} "
    echo
}

Prost

0voto

Ali Yar Khan Punkte 911

$0 gibt den Namen des Skripts an, das Sie ausführen. Erstellen Sie eine Skriptdatei und fügen Sie folgenden Code ein

#!/bin/bash
echo "Name of the file is $0"

dann im Terminal wie folgt ausführen

./file_name.sh

CodeJaeger.com

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.

Powered by:

X