我有这个非常简单的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