bashで以下に宣言された関数を呼び出すことはできますか?
はい
if [ "$input" = "yes" ]; then
YES_FUNCTION
elif [ "$input" = "no" ]; then
NO_FUNCTION
else
exit 0;
fi
YES_FUNCTION()
{
.....
.....
}
NO_FUNCTION()
{
.....
.....
}
ベストアンサー1
他の人が言ったように、あなたはそうすることはできません。
ただし、基本プログラムがファイルの最上部にあり、他の関数が以下に定義されるようにコードをファイルにソートしたい場合は、別の関数を使用してmain
これを実行できます。
例えば
#!/bin/sh
main() {
if [ "$1" = yes ]; then
do_task_this
else
do_task_that
fi
}
do_task_this() {
...
}
do_task_that() {
...
}
main "$@"; exit
main
ファイルの末尾から呼び出すと、すべての関数がすでに定義されています。関数にスクリプトのコマンドライン引数が表示されるようにするには、明示的"$@"
にに渡す必要があります。main
main呼び出しと同じ行に明示的に書き込むことはexit
必須ではありませんが、スクリプトファイルが変更されたときに実行中のスクリプトが混乱するのを防ぐために使用できます。これがない場合、シェルは を返し、スクリプトファイルからコマンドの読み込みを続けますmain
。 (望むより実行する前に完全なシェルスクリプトを読む方法は?)