(2023-03-31 初稿 - 2023-04-08 修正)
bashでも、他のスクリプトで作成したfunctionをimportして使ってみたい。
pythonなら、if __name__ == '__main__': みたいなこと。
最初に思いついたのが以下のスクリプト。
以下のスクリプト(some-script)を作成。
#!/usr/bin/bash some_func() { echo $1 "実行中" } exe_name=$(basename "$0") if $exe_name == "some-script" ; then some_func "単体で" fi
続いて、import側のスクリプト(import-script)を作成
#!/usr/bin/bash source ~/bin/some-script # pathは適当に変更 some_func "Importして"
作成したスクリプトに実行権をつける
$ chmod +x some-script $ chmod +x import-script
作成したスクリプトをそれぞれ実行
$ some-script 単体で 実行中 $ import-script Importして 実行中
なんとなく、目的は達成したけど、スクリプト名を直接書くのが少し気にいらない。
ネットで検索したら、以下のサイトを発見。
some-scriptの if文を以下のように変更。
if $exe_name == "some-script" ; then some_func "単体で" fi
上記を以下に
if [ ${#BASH_SOURCE[@]} = 1 ]; then some_func "単体で" fi
BASH_SOURCE[@]の配列長が1であれば、スクリプトを直接実行したことになるそう…
いいことを教わった。多謝 m(__)m