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


当前回答

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

例如:

: '
This is a
very neat comment
in bash
'

这是维加斯的例子

其他回答

在vscode中ctrl+K+C (ctrl+K+U取消注释)。

在bash中:

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

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

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

shell脚本上没有块注释。

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

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

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

联合国的评论是

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

(从第10行到第100行,替换行开始(^),后面跟着#,并注明//。)

Vi几乎在任何有/bin/sh的地方都是通用的。

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

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

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

记事本的例子:

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

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

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

alias _CommentBegin_=": <<'_CommentEnd_'"

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

你可以这样使用它:

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

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