在Shell脚本中阻止注释

时间:2009-06-03 23:53:34

标签: shell

是否有一种简单的方法可以在shell脚本中注释掉一段代码?

13 个答案:

答案 0 :(得分:310)

在bash中:

#!/bin/bash
echo before comment
: <<'END'
bla bla
blurfl
END
echo after comment

'分隔符周围的'END非常重要,否则块内的内容(例如$(command))将被解析并执行。

有关说明,请参阅thisthis问题。

答案 1 :(得分:81)

shell脚本没有阻止评论。

使用vi(是的,vi)您可以轻松地从 n 行注释到 m

<ESC>
:10,100s/^/#/

(从第10行到第100行,用#符号替换行开头(^)。)

并取消评论

<ESC>
:10,100s/^#//

(读取,从第10行到第100行替换行开头(^)后跟#注释//。)

vi/bin/sh的任何地方几乎都是通用的。

答案 2 :(得分:45)

您可以使用:

if [ 1 -eq 0 ]; then
  echo "The code that you want commented out goes here."
  echo "This echo statement will not be called."
fi

答案 3 :(得分:25)

以下内容适用于shbashkshzsh

要评论的代码块可以放在BEGINCOMMENTENDCOMMENT内:

[ -z $BASH ] || shopt -s expand_aliases
alias BEGINCOMMENT="if [ ]; then"
alias ENDCOMMENT="fi"

BEGINCOMMENT
  echo "This line appears in a commented block"
  echo "And this one too!"
ENDCOMMENT

echo "This is outside the commented block"

执行上述代码将导致:

This is outside the commented block

为了取消注释这样评论的代码块,比如说

alias BEGINCOMMENT="if : ; then"

而不是

alias BEGINCOMMENT="if [ ]; then"

在上面的示例中。

答案 4 :(得分:22)

如果你能躲避单引号:

__='
blah blah comment.
'

答案 5 :(得分:14)

在Vim:

  1. 转到要评论的第一行块
  2. shift-V(进入可视模式),向上突出显示块
  3. 中的行
  4. 在选择:s/^/#/
  5. 上执行以下操作
  6. 命令如下所示:

      :'<,'>s/^/#
    
  7. 点击

  8. e.g。

    shift-V
    jjj
    :s/^/#
    <enter>
    

答案 6 :(得分:4)

你可以使用Vi / Vim的Visual Block模式,它是为这样的东西设计的:

Ctrl-V  
Highlight first element in rows you want commented  
Shift-i  
#  
esc  

取消注释将是:

Ctrl-V  
Highlight #'s  
d  
l  

这是vi做这种事情的互动方式,而不是计算或读取行号。

最后,在Gvim中你使用ctrl-q进入Visual Block模式而不是ctrl-v(因为这是粘贴的快捷方式)。

答案 7 :(得分:2)

这么多过度工程......

我认为编写用于生成被动代码的活动代码确实是一种不好的做法。

我的解决方案:大多数编辑器都有块选择模式。只需使用它将#添加到要注释掉的所有行。 有什么大不了的......

记事本示例:

创建:Alt - mousedrag down,按#。

删除:Alt-mousedrag down,shift-right arrow,delete。

答案 8 :(得分:1)

sunny256接受的答案中here-doc技巧的变体是使用Perl关键字进行评论。如果您的评论实际上是某种文档,那么您可以开始在注释块中使用Perl语法,它允许您将其打印出来,格式良好,将其转换为手册页等。

就shell而言,您只需将'END'替换为'=cut'

echo "before comment"
: <<'=cut'
=pod

=head1 NAME
   podtest.sh - Example shell script with embedded POD documentation

etc.

=cut
echo "after comment"

(发现于&#34; Embedding documentation in shell script&#34;)

答案 9 :(得分:0)

另一种模式是: 如果您的编辑者没有BLOCK注释选项,

  1. 打开第二个编辑器实例(例如File => New File ...)
  2. 从您正在处理的上一个文件中,仅选择要注释的部分
  3. 将其复制并粘贴到新的临时文件的窗口中...
  4. 打开“编辑”菜单,选择“替换”并输入要替换的字符串'\ n'
  5. 输入作为替换字符串:'\ n#'
  6. 按下“全部替换”按钮

完成

它可以与任何编辑器一起使用

答案 10 :(得分:0)

使用: '打开并使用'关闭。

例如:

: '
This is a
very neat comment
in bash
'

这是从发现here的维加斯示例中获得的

答案 11 :(得分:0)

我喜欢单行打开和关闭:

if [ ]; then ##
    ...
    ...
fi; ##

“ ##”可帮助我轻松地找到块注释的开始和结束。如果有很多的话,我可以在“ ##”后面加上一个数字。要关闭评论,只需在“ []”中添加“ 1”即可。我还避免了在注释块中出现单引号问题。

答案 12 :(得分:0)

您可以将代码放在函数内进行注释。这样做的好处是您可以通过在定义之后调用函数来“取消注释”。

除非您计划通过调用函数来“取消注释”,否则函数内的文本不必在语法上正确。

docker

许多 GUI 编辑器将允许您选择一个文本块,然后按“{”自动将大括号括在选定的代码块周围。