2015-02-03 3 views
1

tcsh (버전 6.12.00 (Astron) 2002-07-23)에 간단한 스크립트를 작성하려고하지만 if-then-else 통사론. 나는 글쓰기에 초보자입니다.tcsh의 if-then-else 구문

이 스크립트는 작동합니다

#!/bin/tcsh -f 
if (1) echo "I disagree" 

그러나,이하지 않습니다 :

#!/bin/tcsh -f 
if (1) then 
    echo "I disagree" 
else 
    echo "I agree" 
endif 

한 가지,이 코드를 실행하면, 모두 문을 에코. 그것은 나에게 다른 것을 결코 보지 말아야 할 것처럼 보인다. 또 하나의 경우 출력은 ": Command not found"의 세 번 반복으로 그 에코를 산재시킵니다.

추가 편집 : 여기에 그대로 출력 : I 표준 조언 대신 다른 쉘을 사용하는 것을 알고

: Command not found. 
I disagree 
: Command not found. 
I agree 
: Command not found. 

,하지만 나는 그 (새로운 일을 할 수있는 위치에 정말 새로운 아니다 동료, 다른 모든 사람들이 tcsh를 사용하여 내 스크립트를 이식 가능하게 만들고 싶습니다.)

+0

질문을 업데이트하여 정확한 (복사하여 붙여 넣은) 오류 메시지를 표시하십시오. –

답변

3

스크립트를 복사하여 내 시스템에서 실행하면 I disagree이 올바르게 인쇄됩니다. 나는 Windows 스타일의 라인 엔딩을 변경하면

, 내가 얻을 :

: Command not found. 
I disagree 
: Command not found. 
I agree 
: Command not found. 

그래서, 스크립트는 매우 가능성이 Windows 스타일의 라인 엔딩을 가지고있다. 줄 끝을 수정하면 제대로 작동합니다. dos2unix 명령은 그렇게하는 한 가지 방법이다 (첫번째 man dos2unix이;. 대부분의 유닉스 텍스트 처리 명령과는 달리, 그것의 입력 파일을 대체)

문제가 최종으로^M ('\r')를 인식하지 않는 tcsh가있다 라인 문자. 줄의 끝에있는 then^M을 단일 명령으로보고 오류 메시지 then^M: Command not found을 인쇄합니다.^M은? 서가 행의 시작 부분으로 리턴되도록하고 나머지 메시지는 then을 겹쳐 9니다.