所以我试图在zenity内做一个删除函数。我设法让用户输入他想要的路径,然后我要显示里面存在的所有文件。我知道怎么做,我知道它的工作,但不与zenity。下一个窗口(文件选择)没有弹出,我的程序回到菜单。谢谢,这是我的代码。谢谢你的帮助和时间!
#!/bin/bash
function Ddate()
{
zenity --info
--title "Date and Time"
--text "Today is $(date)"
}
function Dcalendar()
{
zenity --forms
--title "Scheduler"
--text "Pick a date"
--add-calendar "Calendar"
--add-entry "Reminder"
}
function Ddelete()
{
directory=$(zenity --entry
--text "Enter a path"
--title "Delete" )
if [ -z "$directory" ];then
directory=$ pwd
else
if [ -d "$directory" ];then
zenity --file-selection --filename=$(directory)
fi
fi
}
while true;
do
choice="$(zenity --height 275 --width 450
--list
--title=""
--column="Function" --column="Description"
Date 'Display the actual date and time.'
Calendar 'Display an interactive calendar.'
Delete 'Let you delete a file.'
Exit 'To quit this script.')"
case $choice in
Date) Ddate;;
Calendar) Dcalendar;;
Delete) Ddelete;;
Exit) break;;
esac
done
为了解决我的问题,我理解$?转义码。在每个窗口$?控制ok和cancel按钮,分别取值0和1。在我的程序中,我清除了$?首先,由于前面的窗口,可以设置一个值,并设置变量ret为$?意思是如果有人按下ok或取消,它会继续到下一个窗口或回到根窗口。
function Ddelete()
{
directory=$(zenity --entry
--text "Enter a path"
--title "Delete" )
if [ -z "$directory" ];then
directory=$ pwd
else
if [ -d "$directory" ];then
clear $?
Spath=$(zenity --file-selection --filename=$(directory))
ret=$?
fi
fi
}