bash でスクリプト名を取得するには

January 23, 2008

シェルでは $0 で実行したスクリプトファイルのパスが取れる。ここでスクリプト名だけを切り出したときはどうすればよいか。basename というコマンドを使うと切り出せる。また指定したサフィックスを取り除くことができる。
bash だとパターンマッチによる切り出しができる。

#!/bin/bash
base=${0##*/}
echo $base
echo basename $0
echo ${base%.sh}
echo basename $0 .sh

を実行すると、

$ /home/toshi/shell/hoge.sh
hoge.sh
hoge.sh
hoge
hoge
$ ./hoge.sh
hoge.sh
hoge.sh
hoge
hoge

となる。
※スクリプト名を切り出して何に使うのか。
 ⇒例えば view と vi のように実行名によって動作を変えるときなんかに使います。

tilfin freelance software engineer