事件未找到csh

时间:2013-10-04 06:33:48

标签: csh

我有这个非常简单的csh脚本。

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

但我收到错误": Event not found.

有什么问题?

1 个答案:

答案 0 :(得分:8)

csh使用!字符进行历史记录替换。因此,在序列!"中,"不被视为字符串的右引号;相反,shell会在命令历史记录中以"开头搜索某些内容,就像在命令行键入!foo重复从foo开始的最新命令一样。

至少对于原始的csh,即使在单引号字符串中,也总是完成此替换(因此将双引号更改为单引号不一定有帮助。)

转义!字符的唯一方法是使用\反斜杠:

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

(在某些系统上,我发现使用单引号而不是双引号可以避免错误。我认为这是因为在这些系统上/bin/csh是{{1}的符号链接这有点不同。如果你希望你的脚本是可移植的,你不应该依赖它。)

请注意,我还在/bin/tcsh行添加了-f选项。这可以防止shell在启动时执行#!,这对于csh脚本来说通常是一个好主意。它使它们运行得更快,并且它可以防止意外依赖您自己的$HOME/.cshrc,这可能是其他人运行您的脚本时的问题。

关于csh脚本的任何问题,我有法律义务[*]发布此链接:

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

[*] 我实际上没有法律义务发布此链接。