トップレベルメニューに戻る機能を実装するにはどうすればいいですか?

トップレベルメニューに戻る機能を実装するにはどうすればいいですか?

次のような複雑なメニュー駆動型プログラムがあります。

echo "Navigate through the following choices when you get the #? prompt: "
options=("Action 1" "Action 2" ...)
select $opt in "${options[@]}"
do
    case $opt in
        "Action 1")
            ./action1.sh 
            ;;
        "Action 2")
            ./action1.sh 
            ;;
        ...
    esac
done

(ToDo リスト項目を追加/削除/編集/表示できるシンプルな ToDo リスト アプリケーションと考えてください。つまり、追加、削除などがアクションになります)

これらのプロンプトの一部はaction少し長いため、アクションの途中でユーザーが気が変わってメインプロンプトに戻り、別のアクションを試したいと考える可能性もあります。

私の質問は、ユーザーがメイン プロンプトに戻れるようにするにはどうしたらよいかということです。ユーザーが の先頭にジャンプできるようにする単純なキー押下ハンドラーを期待していましたselect。それは可能ですか、それとも他の方法がありますか?

答え1

メインプログラムを再起動することができます。

 # User wants to return to main
 exec main.sh

これにより、現在実行中のスクリプトが削除され、 に置き換えられますmain.sh

新しく起動した では、エクスポートされた変数のみが使用可能であることに注意してくださいmain.sh

関連情報