Как распечатать только название скрипта?

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

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

Вопрос : Как я могу вывести "foo.sh"? Неважно, как это было выполнено.

долбанные-хороший-вопрос
источник

Ответы:

22

Используйте basename:

#!/bin/bash

basename -- "$0"

Если вы хотите присвоить его переменной, вы должны сделать:

my_name=$(basename -- "$0")
CJM
источник
6
Это не удастся, если имя скрипта начинается с тире -, вам нужно basename -- "$0". Использование расширения параметров оболочки, чтобы избежать этого и не заставлять вас запускать внешние команды.
cuonglm
3
@cuonglm, вряд ли имя скрипта будет начинаться с тире, но это верная точка.
cjm