スクリプト名のみを出力する方法は?


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")

6
スクリプト名がダッシュ-で始まる場合、これは失敗しますbasename -- "$0"。必要です。シェルパラメーター展開を使用してそれを回避し、外部コマンドを強制的に起動しないでください。
cuonglm 2015

3
@cuonglm、スクリプト名がダッシュで始まる可能性は低いですが、有効な点です。
cjm 2015

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.