2013-03-12 5 views
3

나는 bash 스크립트를 작성 중입니다. 그것은 메뉴 구동입니다.Case 문이 일치하지 않음 "*"

어떤 이유로 나는 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

+2

@nemo : 패턴처럼 다루어지기를 원치 않는다면'*'와 같은 문자열. :-) – ruakh

+0

@ruakh 예, 물론 :) – nemo

5

Bash 기본 경우에는 *)이 아닌 "*")을 사용하십시오.

따라서, 귀하의 예제에서 :

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

내 대답을 겹쳐서 입력하는 중입니다. 다행 이군. –

관련 문제