我正在写一个bash脚本。它是菜单驱动的。
出于某种原因,我使用了一个case语句,在打印完所有选项之后,我使用*来捕获用户可能输入的任何其他内容。但出于某种原因,我的输出没有完成。
示例:
while [ 1 ]; do
if [ $MAIN_MENU -eq 1 ]; then
printMainMenu
read option
case "$option" in
"1" ) printDiskSpace;;
"2" ) printFreeMemory;;
"0" ) exit;;
"*" ) echo "Input not understood.";;
esac
fi
done
现在发生的事情是当我使用菜单时,如果我输入1,2或0,它会做正确的事情。但如果我输入55例如,它只会重新显示菜单而不回显“输入不理解”。
我在这里错过了什么吗?
谢谢!
答案 0 :(得分:5)
对于Bash默认情况,请使用*)
而不是"*")
。
所以,在你的例子中:
*) echo "Input not understood.";;
答案 1 :(得分:3)
我发现我需要删除星号周围的引号......哇。
感谢您的期待!