是否有一种简单的方法来注释掉shell脚本中的代码块?


当前回答

你可以使用:

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

其他回答

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"

(参见“在shell脚本中嵌入文档”)

老实说,为什么要这么过度设计……

我认为编写主动代码来生成被动代码是一种糟糕的做法。

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

记事本的例子:

创建方法:Alt -鼠标向下拖动,按#。

删除:alt -鼠标向下拖动,右移箭头,删除。

另一种模式是: 如果你的编辑器没有BLOCK评论选项,

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

DONE

它适用于任何编辑器

让我们把这些最好的想法和建议结合起来。

alias _CommentBegin_=": <<'_CommentEnd_'"

如前所述,单引号是非常重要的,因为没有它们 $(commandName)和${varName}将被计算。

你可以这样使用它:

_CommentBegin_
echo "bash code"
or 
none code can be in here
_CommentEnd_

别名使使用更加明显和更好看。

我喜欢单线开闭:

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

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