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

0voto

Salathiel Genèse Punkte 1185

Das habe ich mir ausgedacht, inspiriert von Dimitre Radoulow Antwort (den ich übrigens hochgestimmt habe) .

script="$BASH_SOURCE"
[ -z "$BASH_SOURCE" ] && script="$0"

echo "Called $script with $# argument(s)"

unabhängig davon, wie Sie Ihr Skript aufrufen

. path/to/script.sh

o

./path/to/script.sh

0voto

Koter84 Punkte 27
DIRECTORY=$(cd `dirname $0` && pwd)

Ich habe die obige Frage von einer anderen Stack Overflow-Frage, Kann ein Bash-Skript sagen, in welchem Verzeichnis es gespeichert ist? aber ich denke, es ist auch für dieses Thema nützlich.

-2voto

mmacaulay Punkte 2991

Echo "Sie führen $0"

0 Stimmen

Ist kein Bash-Skript, sondern ein vollständiger Pfad.

-8voto

hynt Punkte 1

Etwas in dieser Art?

export LC_ALL=en_US.UTF-8
#!/bin/bash
#!/bin/sh

#----------------------------------------------------------------------
start_trash(){
ver="htrash.sh v0.0.4"
$TRASH_DIR  # url to trash $MY_USER
$TRASH_SIZE # Show Trash Folder Size

echo "Would you like to empty Trash  [y/n]?"
read ans
if [ $ans = y -o $ans = Y -o $ans = yes -o $ans = Yes -o $ans = YES ]
then
echo "'yes'"
cd $TRASH_DIR && $EMPTY_TRASH
fi
if [ $ans = n -o $ans = N -o $ans = no -o $ans = No -o $ans = NO ]
then
echo "'no'"
fi
 return $TRUE
} 
#-----------------------------------------------------------------------

start_help(){
echo "HELP COMMANDS-----------------------------"
echo "htest www                 open a homepage "
echo "htest trash               empty trash     "
 return $TRUE
} #end Help
#-----------------------------------------------#

homepage=""

return $TRUE
} #end cpdebtemp

# -Case start
# if no command line arg given
# set val to Unknown
if [ -z $1 ]
then
  val="*** Unknown  ***"
elif [ -n $1 ]
then
# otherwise make first arg as val
  val=$1
fi
# use case statement to make decision for rental
case $val in
   "trash") start_trash ;;
   "help") start_help ;;
   "www") firefox $homepage ;;
   *) echo "Sorry, I can not get a $val   for you!";;
esac
# Case stop

5 Stimmen

-1, beantwortet die Frage nicht (zeigt nicht, wie man den Namen des Skripts findet) und ist ein verwirrendes Beispiel für ein sehr fehlerhaftes Skript.

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