目前,我有以下对话框函数,我正在尝试将其制作成可重用的是/否提示,我可以使用 YesNoPrompt 调用它,后跟它需要的变量。
该函数如下所示:
function YesNoPrompt {
dialog --begin 2 1 --no-shadow --title "$1" --hline "$2" \
--backtitle "$3" --yes-label $4 --no-label $5 \
--yesno "$6" 26 38 20>&1 > /dev/tty \
|| exit
sudo reboot
}
并被这样称呼:
YesNoPrompt "TITLE" "HLINE" "BACKGROUND TEXT" "YES" "NO" "MAIN MESSAGE"
它工作得很好,但我还希望能够向它传递选项,这些选项将决定如果用户选择“是”或“否”而不是该功能当前具有的硬编码退出和重新启动会发生什么。
有办法做到这一点吗?
任何想法将不胜感激。
答案1
dialog
如果进程以非零退出状态退出,下面的函数将执行参数 7 中的命令;否则——如果dialog
成功退出——该函数将执行参数 8 中的命令。
function YesNoPrompt {
if ! dialog --begin 2 1 --no-shadow --title "$1" --hline "$2" \
--backtitle "$3" --yes-label "$4" --no-label "$5" \
--yesno "$6" 26 38 20>&1 > /dev/tty
then
eval "$7"
else
eval "$8"
fi
}
我将逻辑重新设计成||
一个完整的if/then/else
陈述;否则,您的替换exit
(如果没有exit
或return
)可能允许后续sudo reboot
(或替换)还执行。大概您只想执行一个或另一个命令。我还引用了所有参数。
eval
如果您想传递多个单词作为命令(例如sudo reboot
),则 是必需的。请注意,这eval
会导致参数经历另一轮 shell 解释,因此请注意通配符或其他扩展等内容。