Bash で __FILE__ みたいなやつが欲しい。つまり Python でいう、
if __name__ == '__main__':
main()
とか、Perl でいう、
if ($0 eq __FILE__) {
main;
}
おっと、Perl ではこっちの方がイケてるんだっけ?
main unless caller;
とかいうのを Bash でやりたい。今まではその度に誤魔化してお茶を濁してきたが、そろそろ我慢できなくなってきた。で、調べると BASH_SOURCE を使え、と。
if [ "$0" = "$BASH_SOURCE" ] ; then
main "$@"
fi
組み込み配列変数 BASH_SOURCE の 0 番目要素に現在処理中のファイル名が入っている。なので本来は ${BASH_SOURCE[0]} とするのが正確なのだろうが、動くなら簡単な方でいいや。
ただ、配列変数を単純参照したとき 0 番目要素の参照になる、という根拠は manpage や「O'reilly 入門 bash 第3版」などからは見つけきらんかった。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。