2013-10-04 82 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使用!字符進行歷史替換。因此,在順序!"中,"不被視爲該字符串的結束引號;相反,shell會在您的命令歷史記錄中搜索以"開頭的內容,就像在命令行鍵入!foo重複以foo開頭的最新命令一樣。

至少對於原始的csh,這個替換總是完成的,即使是在單引號字符串中(所以將雙引號改爲單引號也不一定有幫助)。

逃脫!角色的唯一方法是用\反斜槓:

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

(在一些系統,我發現,使用單引號,而不是雙引號並避免錯誤,我認爲這是因爲這些系統/bin/csh是一個符號鏈接/bin/tcsh,它的工作原理有點不同。如果你想你的腳本是便攜式的你不應該依賴於這一點。)

請注意,我還添加了一個-f選項到#!行。這可以防止shell在啓動時執行$HOME/.cshrc,對於csh腳本通常是個好主意。它使它們運行得更快,並防止意外依賴於您自己的.cshrc,這可能會在其他人運行腳本時出現問題。

並在大約CSH腳本任何問題,我在法律上有義務[*]張貼此鏈接:

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

[*] 我實際上不是法律義務張貼此鏈接。

+1

TL; DR:「什麼問題?」 「CSH」。對問題和答案都+1。 – stevesliva