我有這個非常簡單的csh腳本。未找到事件csh
#!/bin/csh
echo "Hello World!"
echo "How are you today?"
但我得到的錯誤": Event not found.
有什麼不對?
我有這個非常簡單的csh腳本。未找到事件csh
#!/bin/csh
echo "Hello World!"
echo "How are you today?"
但我得到的錯誤": Event not found.
有什麼不對?
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
[*] 我實際上不是法律義務張貼此鏈接。
TL; DR:「什麼問題?」 「CSH」。對問題和答案都+1。 – stevesliva
將第一行修改爲'#!/ bin/csh -f'並重試。它可能與你的'.cshrc'或'.tcshrc'有關。 – timrau
試過。不工作 – Programmer