2013-10-04 3 views
5

이 간단한 csh 스크립트가 있습니다.이벤트를 찾을 수 없습니다. csh

#!/bin/csh 
     echo "Hello World!" 
     echo "How are you today?" 

하지만 오류 ": Event not found.

어떤 문제가 무엇입니까?

+0

첫 줄을'#!/bin/csh -f'로 수정하고 다시 시도하십시오. '.cshrc' 또는'.tcshrc'와 관련이있을 수 있습니다. – timrau

+0

시도. 작동하지 않음 – Programmer

답변

7

csh는 내역 대체를 위해 ! 문자를 사용합니다. 따라서 시퀀스 !"에서 "은 문자열의 닫는 따옴표로 처리되지 않습니다. 명령 행에서 !foo을 입력하면 foo으로 시작하는 가장 최근의 명령이 반복되는 것처럼 쉘은 "으로 시작하는 명령 내역에서 무언가를 검색합니다.

적어도 원래의 csh의 경우,이 따옴표는 작은 따옴표로 묶은 문자열에서도 항상 대체됩니다. 따라서 큰 따옴표를 작은 따옴표로 바꾸어도 반드시 도움이되는 것은 아닙니다. .

#!/bin/csh -f 
echo "Hello World\!" 
echo "How are you today?" 

(일부 시스템에서, 나는 작은 따옴표가 아니라 따옴표를 사용하면 오류가 발생하지 않도록 않는 것을 발견 나는 그 생각 :

! 문자를 탈출하는 유일한 방법은 \ 백 슬래시입니다 이러한 시스템 /bin/csh에 조금 다르게 작동 /bin/tcsh에 심볼릭 링크가 있기 때문에 당신이 당신의 스크립트 호환성을합니다. 당신은에 의존해서는 안된다.) 나는 또한을 추가 한

주옵션을 #! 행에 추가하십시오. 이렇게하면 셸이 시작시에 $HOME/.cshrc을 실행하지 못하며, 일반적으로 csh 스크립트를 사용하는 것이 좋습니다. 스크립트를 조금 더 빠르게 실행하고 다른 사용자가 스크립트를 실행할 때 문제가 될 수있는 자신의 .cshrc에 대한 우연한 의존을 방지합니다.

그리고 csh를 스크립팅에 대한 질문에

, 나는 법적으로 [*]이 링크를 게시 할 의무가 있어요 :

http://www.perl.com/doc/FMTEYEWTK/versus/csh.whynot

[*] 실제로 법적으로이 링크를 게시 할 의무가 없습니다입니다.

+1

TL; DR : "무엇이 잘못 되었나요?" "csh." 질문과 답변 모두 +1. – stevesliva

관련 문제