Wie drucke ich nur den Skriptnamen aus?


9
[username@notebook ~]$ cat foo.sh 
#!/bin/bash

echo "$0"
[username@notebook ~]$ ./foo.sh
./foo.sh
[username@notebook ~]$ 

Frage : Wie kann ich "foo.sh" ausgeben? Egal wie es ausgeführt wurde.

Antworten:


22

Verwendung basename:

#!/bin/bash

basename -- "$0"

Wenn Sie es einer Variablen zuweisen möchten, gehen Sie wie folgt vor:

my_name=$(basename -- "$0")

6
Dies wird fehlschlagen , wenn Skriptnamen mit einem Bindestrich beginnen -, benötigen Sie basename -- "$0". Verwenden Sie die Shell-Parametererweiterung, um dies zu vermeiden, und zwingen Sie Sie nicht, einen externen Befehl zu starten.
Cuonglm

3
@cuonglm, es ist unwahrscheinlich, dass ein Skriptname mit einem Bindestrich beginnt, aber es ist ein gültiger Punkt.
cjm

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.