シェル関数をエクスポートして使う
シェル関数をエクスポートして使う
スクリプト全体の中で、関数を定義し、その関数をxargs(1)を使って呼び出す例 シェルスクリプト内で、作った関数をコマンドとして使うことはできますか?例えば func() という関数を作って、呼び出し元の方で xargs func 1 2 3 のように呼び出すことはできますか。
code:script.sh
# func関数の定義
func() {
echo "Processing argument: $1"
# ここに処理内容を記述
}
# 関数をエクスポート(関数自体を渡すわけではなく、環境変数として渡す)
export -f func
# xargsを使用してfunc関数を呼び出し
echo "1 2 3" | xargs -n 1 bash -c 'func "$@"' _
_は$0として使われ、後続の引数が"$@"として渡される。
スクリプト全体で定義した変数は、環境変数としてエクスポートしない限りサブシェルには受け継がれない。
export キーワードを使ってエクスポート
関数をエクスポートする際は-fオプションを使用する
サブシェル内でグローバル変数がunsetされてもグローバルは維持される。