【发布时间】:2019-04-11 17:23:04
【问题描述】:
我最近一直在尝试对话和 bash 脚本。我创建了一个包含三个选项的对话框菜单:用户、密码和组,然后还有一个退出选项。我试图在 case 语句中为每一个运行函数,但它似乎总是落入最后一条语句并输出 echo "Something Else..." 语句,无论我选择哪个选项而不是说运行相关函数中的 echo 语句,例如echo "进入用户子菜单"
我已经尝试在调试时运行它:
bash -x myscript
我得到以下输出:
+ choice='Users
Error: Expected a box option.
Use --help to list options.'
+ '[' 'Users
Error: Expected a box option.
Use --help to list options.' '!=' ' Quit ']'
+ case $choice in
+ echo 'Something else. Where Am I?'
Something else. Where Am I?
+ exit 0
我仍在试图弄清楚“预期的框选项”是什么意思,这听起来与对话框有关,但我也想知道我的 if 语句或 bash 中的 case 语句是否有问题。
我的脚本代码:
#!/bin/bash
function quit {
exit 0
}
function menu {
choice=$(dialog --backtitle "Rob Graves's Bash Scripting" \
--title "Main Menu" --menu "Choose one" 30 50 4 "Users" \
"- Do something with users" "Passwords"\
"- Do stuff with passwords" "Groups" "- Do things with groups" \
"Quit" "- Exit to desktop" --clear --nocancel 3>&1 1>&2 2>&3)
if [ "$choice" != "Quit" ]; then
case $choice in
Users)
users #calls users function
;;
Passwords)
passwords #calls passwords function
;;
Groups)
groups #calls groups function
;;
*)
echo "Something else. Where Am I?"
;;
esac
else
echo "Quitting..."
quit
fi
}
function users {
echo "Entering Users sub-menu"
}
function passwords {
echo "Entering Passwords sub-menu "
}
function groups {
echo "Entering Groups sub-menu"
menu
exit 0
【问题讨论】:
-
注意——为对话框提供 GUI 的快速插入式替换是 xdialog(命令是
Xdialog)。脚本的另一种选择。
标签: bash