这是我的代码:
while true; do
choice=$(zenity --list --text "Users are listed below." --title "Result" --ok-label="Back to Menu" --cancel-label="Quit" --column=Users $(cut -d : -f 1 /etc/passwd))
if [ "$choice" = "root" ]
then
echo 'You have clicked on root'
fi
if [["$?" = "Quit"]]
then
exit
fi
done
如您所见,它首先显示系统上的活动用户列表。如果用户单击了“root”,我希望我的小程序打印“您已单击 root”,如果他/她单击了按钮(包括“退出”和“返回菜单”),则执行其他操作。
注意:我搜索了很多,我知道有很多相关的问题。但他们都没有对我的问题有准确的答案。
编辑:我改变了我的代码,现在的问题是它没有回显任何东西。
while true; do
choice=$(zenity --list --text "Users are listed below." --title "Result" --ok-label="Back to Menu" --cancel-label="Quit" --column=Users $(cut -d : -f 1 /etc/passwd))
if [ "$?" != 0 ]
then
exit
fi
if [ "$choice" = "root" ]
then
echo 'You have clicked on root'
fi
done
我不确定它是否相关。但我使用的是 ubuntu 18.04
编辑 2:我使用 bash -x 运行了我的脚本,结果在这里。
$?
是退出状态,它是一个整数,永远不能是“退出”。但是,如果用户确实点击了“退出”,zenity 将以状态 1 退出,如果用户点击 OK 按钮,则状态为 0。所以你可以这样做:
最好与 比较
0
,因为其他失败条件可能导致退出状态不是 0 或 1。