2013-03-12 75 views
3

我在寫一個bash腳本。這是菜單驅動。Case Statement not matching「*」

出於某種原因,我使用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例如,它會重新顯示菜單,而不迴應「輸入未理解」。

我在這裏錯過了什麼嗎?

謝謝!

回答

2

我發現我需要刪除星號周圍的引號......哇。

感謝您的期待!

+1

你並不需要在所有的報價處理與空格的字符串時除外。 – nemo 2013-03-12 20:43:06

+2

@nemo:或者像'*'這樣的字符串,如果你不希望它們被視爲模式。 :-) – ruakh 2013-03-12 20:44:55

+0

@ruakh是的,當然:) – nemo 2013-03-12 20:45:32

5

對於Bash默認情況,使用*)而不是"*")

所以,在你的榜樣:

*) echo "Input not understood.";; 
+1

我正在輸入與你重疊的答案,並且已經發現它。真高興你做到了。 – 2013-03-12 20:45:01