2013-03-05 6 views
5

내 스크립트에서 많은 옵션 목록을 원합니다. 사용자는 해당 옵션 중 하나와 일치하는 입력 만 제공합니다. 내가 여러 명령을 실행할 수있는 여러 옵션을 가질 수 있기를 원하지만 OR 작업을 할 수없는 것 같습니다. 아래는 어떻게 보일 것 같아, a 또는 b 라인을 만드는 방법에 대한 아이디어가 있습니까?tcl switch 문에서 또는를 사용하려면 어떻게해야합니까?

switch -glob -- $opt { 
    "a" || "b" { 
     puts "you selected a or b, probably not both" 
    } 
    default { 
     puts "Your choice did not match anything" 
    } 
} 

답변

10

-을 케이스의 본문으로 사용하고 다음 본문으로 넘어갈 수 있습니다. Tcl Manual 설명 같이 본체가 지정된 경우

"-"는 다음 패턴도를 가지면 다음 패턴 본체도 (이 패턴 본문으로 사용되어야한다는 것을 의미 "-"의 본문과 그 이후의 본문이 사용되며 등등). 이 기능을 사용하면 여러 패턴 중에서 하나의 본문을 공유 할 수 있습니다. 옵션이 concatentated 문자의 큰 문자열이있는 경우 또한

는 와일드 카드로 옵션 패턴 책꽂이해야 할 것, 또는 opt는 하나의 옵션이 포함 된 경우 귀하의 경우에만 일치합니다 :

switch -glob -- $opt { 
    "*a*" - 
    "*b*" { 
     puts "you selected a or b, probably not both" 
    } 
    default { 
     puts "Your choice did not match anything" 
    } 
} 
+0

감사 것을 정확히 내가 알아야 할 것이 었어. – SuperTetelman

0

또한이 작동하지 :

switch -regexp -- $opt { 
    a|b { 
     puts "you selected a or b, probably not both" 
    } 
    default { 
     puts "Your choice did not match anything" 
    } 
} 

주의 : 사이에 공백 "A | B"

관련 문제