ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

bashでimportっぽいことをしてみる

(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

関連ページ