如何在csh上输入评论?

时间:2013-10-14 16:37:12

标签: comments csh

bash中,我使用#输入评论。即使是在互动环节上也是如此。

bash-3.2$ #
bash-3.2$ #
bash-3.2$ #
bash-3.2$ 

csh吐出错误。如何在交互式csh会话中输入一些评论?换句话说,我正在寻找一种在csh中100%确定评论的方法。

root@freebsd9:~ # #
#: Command not found.
root@freebsd9:~ # # 3e
#: Command not found.
root@freebsd9:~ # #
#: Command not found.
root@freebsd9:~ # 

4 个答案:

答案 0 :(得分:8)

交互式csh或tcsh不做评论。 #字符仅在脚本中引入注释。 (这与sh及其派生词的行为不同,例如bash。)引用csh手册页(来自Solaris 9,csh不仅仅是tcsh的符号链接的其余系统之一1}}):

  

当shell的输入不是终端时,字符#   引入一条持续到输入行末尾的注释。   它的特殊含义在前面带有\或括号时被抑制   匹配报价。

我认为,重点是交互式命令不需要评论。

如果您使用的是tcsh ,则可以使用内置的:命令执行类似操作,该命令不执行任何操作:

% : 'This is not a comment, but it acts like one.'

(其中%表示shell提示符,:是命令)。引用这个论点是个好主意;否则,虽然命令没有执行,但它可能有一些效果:

% : This will create the file "oops.txt" > oops.txt

请注意,由于:是一个命令,因此必须后跟一个空格。

:命令最初是在Bourne shell的早期版本中引入的,或者甚至可能在此之前引入。

但是,/bin/csh命令的:版本不允许任何参数,因此无法替代注释:

csh% : 'This will not work.'
:: Too many arguments
csh% 

(当我最初发布这个答案时,我没有意识到。我必须用tcsh测试它而不是真正的csh。)

由于:在纯csh中不起作用,下一个最佳解决方案可能是使用echo并重定向输出:

csh% echo 'This is not a comment, but it acts like one.' > /dev/null

强制性链接:http://www.perl.com/doc/FMTEYEWTK/versus/csh.whynot

答案 1 :(得分:2)

作为参考,我想注意我目前的解决方法。它正在使用echo

#!/bin/tcsh
echo "This is comment line."
echo "But still, beware... Because `expression` is still being evaluated.

这是我能找到的最佳方式。

答案 2 :(得分:0)

要在tcsh或csh中使用#作为交互式评论,这似乎适用于大多数情况:

alias '#' 'echo \!* >> /dev/null'

它可以由用户以交互方式运行,也可以根据需要放在 .tcshrc .cshrc 配置文件中。

(别名显然可以按照您的意愿命名;正常限制适用。)

注意:正如上面提到的Keith Thompson所说,如果你的评论包含>>>等重定向字符,这仍然会出错,但是这种方式似乎并没有真正创建不需要的重定向文件。单引号(')周围的注释仍然是一种解决方法。

答案 3 :(得分:-2)

检查您的脚本是否具有UNIX EOL格式。 Windows EOL格式存在一些问题。