Bashで関数を「エクスポート」できますか?

Bashで関数を「エクスポート」できますか?
source some_file

一部_ファイル:

doit ()
{
  echo doit $1
}
export TEST=true

私がソースだったら一部のファイル"doit"関数とTEST変数はコマンドラインで使用できます。ただし、次のスクリプトを実行してください。

スクリプト.sh:

#/bin/sh
echo $TEST
doit test2

TEST値が返されますが、不明な関数「doit」のエラーが発生します。

関数も「エクスポート」できますか?または、そこで関数を使用するには、script.shからsome_fileを取得する必要がありますか?

ベストアンサー1

Bashでは、スクリプトが呼び出す他のシェルスクリプトに関数定義をエクスポートできます。

export -f function_name

たとえば、次の簡単な例を試すことができます。

./script1:

#!/bin/bash

myfun() {
    echo "Hello!"
}

export -f myfun
./script2

./script2:

#!/bin/bash

myfun

その後、電話すると./script1出力が表示されます。こんにちは!

おすすめ記事