我希望有人可以帮我解决问题。
我希望获得与下面的代码相同的结果,但使用对话框。
#!/bin/bash
PS3='Please enter your choice: '
options=("Option 1" "Option 2" "Option3" "Quit")
select opt in "${options[@]}"
do
case $opt in
"Option 1")
sudo apt-get update
;;
"Option 2")
echo "you chose choice 2"
;;
"Option 3")
echo "you chose choice 3"
;;
"Quit")
break
;;
*) echo invalid option;;
esac
done
请参阅下面的对话框代码:
#!/bin/bash
HEIGHT=15
WIDTH=40
CHOICE_HEIGHT=4
BACKTITLE="Backtitle here"
TITLE="Title here"
MENU="Choose one of the following options:"
OPTIONS=(1 "Option 1"
2 "Option 2"
3 "Option 3")
CHOICE=$(dialog --clear \
--backtitle "$BACKTITLE" \
--title "$TITLE" \
--menu "$MENU" \
$HEIGHT $WIDTH $CHOICE_HEIGHT \
"${OPTIONS[@]}" \
2>&1 >/dev/tty)
clear
case $CHOICE in
1)
sudo apt-get update
;;
2)
echo "You chose Option 2"
;;
3)
echo "You chose Option 3"
;;
esac
基本上在选择选项1后,我希望再次提示相同的菜单。
非常感谢您的帮助。
亲切的问候。
答案 0 :(得分:1)
您可以将对话框部分插入while循环
#!/bin/bash
HEIGHT=15
WIDTH=40
CHOICE_HEIGHT=4
BACKTITLE="Backtitle here"
TITLE="Title here"
MENU="Choose one of the following options:"
OPTIONS=(1 "Option 1"
2 "Option 2"
3 "Option 3"
4 "Quit")
while [ "$CHOICE" -ne 4 ]; do
CHOICE=$(dialog --clear \
--backtitle "$BACKTITLE" \
--title "$TITLE" \
--menu "$MENU" \
$HEIGHT $WIDTH $CHOICE_HEIGHT \
"${OPTIONS[@]}" \
2>&1 >/dev/tty)
clear
case $CHOICE in
1)
sudo apt-get update
;;
2)
echo "You chose Option 2"
;;
3)
echo "You chose Option 3"
;;
esac
done
答案 1 :(得分:1)
太棒了,我找到了它:“”
中遗失的地方$CHOICE -ne 4
所以正确的行是:
while [ "$CHOICE -ne 4" ]; do
非常感谢!很多人赞赏!