我有这个非常简单的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
[*]实际上,我没有法律义务发布此链接。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句