这个问题很简单,zenity 上每个页面都有 2 个按钮,确定和取消。使用我的脚本,我设法将 zenity 代码分配给一个变量,我可以在变量中为日历选择一个日期。我想将取消按钮用于我的日程安排,所以我重命名了它,但我不知道如何让它工作!谢谢
#!/bin/bash
calendarinput=$(zenity --calendar \
--title "Scheduler" \
--text "Pick a date" \
--ok-label "Done" --cancel-label "Agenda" \
--date-format "%A %d/%m/%y")
agenda+="$calendarinput"
unset calendarinput
calendarinput="Done"
if [ "$calendarinput"="Done" ];then
remind=$(zenity --entry)
agenda+="$remind\n"
fi
zenity --info \
--text "$agenda"
这是我的脚本的唯一一个功能。在此之前还有另一个列表菜单。
答案1
您可以在特殊参数中找到按钮的返回代码$?
,该参数保存了上次执行的命令的退出代码。它可以是 0、1 或 5,具体取决于用户是否按下了“确定”、“取消”或“超时”。
#!/bin/bash
calendarinput=$(zenity --calendar \
--title "Scheduler" \
--text "Pick a date" \
--ok-label "Done" --cancel-label "Agenda" \
--date-format "%A %d/%m/%y")
ret=$?
if ((ret==0)); then
echo "Done"
else
echo "Agenda"
fi
if 语句中的表达式需要用空格分隔:
if [ "$calendarinput" = "Done" ]; then
(它也总是评估为真的,这使得它有点不必要)。
答案2
使用 case esac 而不是 if fi 进行设置
zenity --whatever
case $? in
0) whatever.script #this is pressing ok
;;
1) $1 # this is pressing cancel
;;
*) $1 #this is closing window etc $1 will kill process
;;
esac