我正在玩 BASH 中的 YAD 对话框,并且在按钮构造方面遇到问题。我无法获得 YAD 按钮来调用同一脚本中的函数。有没有办法做到这一点?
我的理解是,如果我使用以下结构,按下按钮将调用冒号后面的命令 如果用户单击“打开浏览器”按钮,此示例(有效)将打开一个 Firefox 实例:
yad --button="Open browser":firefox
我有一个包含几个 BASH 函数的脚本。我想要一个按钮来调用其中一个功能。它没有。以下是一个简单的脚本,在运行时会演示令人失望的行为:
#!/bin/bash,
click_one()
{
yad --center --text="Clicked the one"
}
click_two()
{
yad --center --text="Clicked the two"
}
cmd="yad --center --text=\"Click a button to see what happens\" \
--button=\"One\":click_one \
--button=\"Two\":2 \
--button=\"Date\":date \
--button=\"Exit\":99"
proceed=true
while $proceed; do
eval "$cmd"
exval=$?
case $exval in
2) click_two;;
99) proceed=false;;
esac
done
在上面的代码中,按钮Date按预期工作,调用date命令。按钮二和退出起作用,因为我正在检查命令的退出值并对其值进行分支。可悲的是(对我而言),按钮One什么也没做。我曾希望单击按钮One会调用本地函数click_one。我想知道是否有办法格式化 YAD 命令以便调用click_one函数。
虽然上面的代码建议使用退出值的解决方法,但我的真正目标是对表单按钮应用成功的答案,据我目前所知,它不会返回退出值。换句话说,以下内容也会静默失败,但我希望它调用函数click_one:
yad --form --field="One":fbtn click_one