メニューを終了せずにメニューから終了スクリプトを呼び出す

メニューを終了せずにメニューから終了スクリプトを呼び出す

私はいくつかのスクリプトを必要とするこのメニューを書きました。スクリプトの1つは

dbus-monitor --system

したがって、dbusのリアルタイムトラフィックを表示します。

しかし、終了したいときは通常Ctrl+を使用しますCが、これも私のメニューを終了して私のメニューに戻りたいと思います。

シャットダウンが検出されたら、メニューを再起動するためにdbus-moniterの後ろに置くことができるコードはありますか?私のメニューは別の.shスクリプトです。

または…。

- - - - - - - - - 説明 - - - - - - - - -

私は「まだ」スクリプトに精通していません。これは dbus スクリプトを呼び出すメニューです。

select opt in "dbus Live Traffic" "option 2" "Main menu" "Quit"
    do
        case $opt in
            "dbus Live Traffic")
                curl -s -u lalala:hihihi ftp://ftp.somewhere.com/folder/dbuslivetraffic.sh | bash ;;   
            "option 2")
                do_something ;;   
            "Main menu")
                main_menu;;
            "Quit")
                quit_menu;;
        esac
        if [[ $opt != "Main menu" ]] || [[ $opt != "Quit" ]] ;
        then
            main_menu
        fi
    done

これは私のdbuslivetraffic.shの内容です。

dbus-monitor --system

現在はこの行だけですが、近いうちにこのスクリプトにさらにコードが追加されます。

TRAP@RoVoが提案したのと同じ機能をどこに置くべきかは本当にわかりません。

ベストアンサー1

サブシェルでコマンドを実行し、実行中のサブシェルのtrapプロセスグループのみを終了できます。SIGINTkill 0

select opt in a b; do
    case $REPLY in
      1)
        (
          trap "kill -SIGINT 0" SIGINT
          sleep 10
        )
        ;;
      2)
        sleep 10
        ;;
    esac
done
  • (1)を選択すると、メニューを終了せずに Ctrl+を使用できます。c
  • (2)を選択してCtrl+を押してもcメニューが終了します.

おすすめ記事