関数内に関数を追加することは可能ですか?

関数内に関数を追加することは可能ですか?

これは私のコードです。

function update_profile
{
    echo "1. Update Name"
    echo "2. Update Age"
    echo "3. Update Gender"
    echo "Enter option: "
    read option

    case $option in
         1) update_name ;;
         2) update_age ;;
         3) update_gender ;;
    esac

    function update_name
    {
        echo "Enter new name: "
        read name
    }
}

これが可能かどうかを確認したかったです。すべてのコードをケースに入れることができることはわかっていますが、そうすれば乱雑になるので、関数の内部にスタンドアロン関数を作成し、そのコマンドを実行する必要があるたびに呼び出したいと思います。

ベストアンサー1

はい、可能です。

あまり役に立ちませんが、他の関数内に関数を入れ子にすることも可能です。

f1 ()
{

  f2 () # nested
  {
    echo "Function \"f2\", inside \"f1\"."
  }

}  

f2  #  Gives an error message.
    #  Even a preceding "declare -f f2" wouldn't help.

echo    

f1  #  Does nothing, since calling "f1" does not automatically call "f2".
f2  #  Now, it's all right to call "f2",
    #+ since its definition has been made visible by calling "f1".

    # Thanks, S.C.

源泉:Linux文書化プロジェクト

おすすめ記事