首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到事件csh

找不到事件csh
EN

Stack Overflow用户
提问于 2013-10-04 14:33:48
回答 1查看 12.2K关注 0票数 5

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

代码语言:javascript
复制
#!/bin/csh
        echo "Hello World!"
        echo "How are you today?"

但是我得到了错误": Event not found.

怎么啦?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-04 23:06:07

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

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

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

代码语言:javascript
复制
#!/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

*我实际上没有法律义务张贴这个链接。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19174808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档