使用 Bash 中的 GUI 停止无限循环

使用 Bash 中的 GUI 停止无限循环

我使用这个创建了一个无限循环的 bash 脚本回答我想要一个 GUI(只需单击一两次)来随时停止无限循环。我该怎么做?

编辑以进一步阐明 GUI(我的偏好)-

它应该类似于 gnome shell 扩展在下拉菜单中提供选项。像这样

在此处输入图片描述

答案1

这将创建一个带有按钮的 XMessage 窗口并运行循环,该循环不断检查给定文件是否存在文件名变量。单击按钮时,将创建文件,然后循环结束。

gui(){
    xmessage "Click to stop loop" -buttons Stop:7
    if [ "$?" -eq 7 ]; then
        touch "$filename"
    fi
}

filename='/tmp/loopandgui'
gui &

while true; do
    sleep 0.1

    if [ -f "$filename" ]; then
        rm "$filename"
        break
    fi
done

请注意,关闭窗口不会停止循环,您需要按 XMessage 的“停止”按钮。如果您想停止循环,即使 XMessage 以任何方式被关闭,只需从中删除 if 条件即可gui()

gui(){
    xmessage "Click to stop loop" -buttons Stop:7
    touch "$filename"
}

相关内容