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


当前回答

在bash中:

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

END分隔符周围的“和”很重要,否则块内的内容(例如$(命令))将被解析并执行。

关于解释,请看这个和这个问题。

其他回答

你可以使用:

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

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

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

ignored() {
  echo this is  comment
  echo another line of comment
}

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

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

例如:

: '
This is a
very neat comment
in bash
'

这是维加斯的例子

我喜欢单线开闭:

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

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

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

alias _CommentBegin_=": <<'_CommentEnd_'"

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

你可以这样使用它:

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

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