親スクリプトで定義した関数を子スクリプトで実行する方法

スクリプトで "export -f FUNCTION_NAME" する.

例:

スクリプト

#!/bin/sh

hoge () {
        echo "function=hoge: "$1
}

echo "parent: 1"

export -f hoge
sh child.sh

echo "parent: 5"

スクリプト

#!/bin/sh

echo "child: 2"

hoge "3"

echo "child: 4"

実行:

# sh parent.sh
parent: 1
child: 2
function=hoge: 3
child: 4
parent: 5


export を解除するには "unset FUNCTION_NAME" する.

例2:

スクリプト

#!/bin/sh

hoge () {
        echo "function=hoge: "$1
}

echo "parent: 1"

export -f hoge
sh child.sh

unset hoge
sh child.sh

echo "parent: 5"

スクリプト

#!/bin/sh

echo "child: 2"

hoge "3"

echo "child: 4"

実行:

# sh parent.sh
parent: 1
child: 2
function=hoge: 3
child: 4
child: 2
child.sh: line 5: hoge: command not found
child: 4
parent: 5