以下に宣言された関数を呼び出します。

以下に宣言された関数を呼び出します。

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。 (望むより実行する前に完全なシェルスクリプトを読む方法は?)

おすすめ記事