2011-01-06 7 views
2

내가 한 무리를 피하기 위해 간결한 비교 문을 사용하려고 사투를 벌인거야 "만약 A = B를 또는 = c 또는 A = D 또는 = 전자"등문자열/문자열 tcsh의

대신, 나는 당신이 펄에서 할 것처럼 정규식과 패턴 매칭을 사용하려고 노력하고있다.

세트 일 = "레드"와

라인

($ 성 = ~ 노란색 | 블루 | 레드 | 녹색)의 경우

그냥 작동하지 않습니다 (경우 : 표현 구문.) 나는 시도와 함께 견적 s, 괄호하지만 오류가없는 경우 예상 된 결과를 얻지 못합니다.

무거운 구조 피하는 방법이있다 :

경우 ($ 일 == 노란색) || ($ st == blue) || ($ st == red) || ($ st == green)?

같은 질문을하는 또 다른 방법은 tcsh가 "문자열에 문자열 b가 포함 된 경우"와 같은 것을 허용합니까? tcsh 참조에서 하위 문자열의 개념을 찾을 수 없습니다.

감사합니다.

+0

필수 링크 : [Csh Programming Considered Harmful] (http://www.perl.com/doc/FMTEYEWTK/versus/csh.whynot). –

답변

6

나는 tsch을 알고 있지만, 정보에 (특수 문자 이하)이 페이지를보고하지 않습니다

if ($st =~ {yellow,blue,red,green}) 
+0

와우,이 작품은 참으로! 나는 중괄호를 사용했지만, 필자가 누락 한 것은 값들 사이의 ","구분자이다. -/파이프 문자로 시도한다. 매우 감사드립니다. 감사! – MadMacs

5

을 : http://www.tcsh.org/tcsh.html/Filename_substitution.html http://www.cs.duke.edu/csl/docs/csh.html 당신이 괄호로 색상을 포위 할 필요가 나타납니다 ~= 연산자의 오른쪽에있는 것이 "glob-pattern"이고 이 아니고 정규 표현식입니다. (예를 들면, 정규식에 . 임의의 문자와 일치하고 .*은 0 이상의 임의의 문자와 일치 상기 글로브 패턴 당량 ?*이다.)

{...,...,...}가 글롭 - 패턴의 구문의 일부이다. 전체 설명은 man tcsh입니다.

정규 표현식과 일치해야하는 경우 expr 명령을 사용할 수 있습니다. 세부 사항은 man expr 또는 info expr입니다.