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


当前回答

shell脚本上没有块注释。

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

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

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

联合国的评论是

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

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

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

其他回答

我喜欢单线开闭:

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

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

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

alias _CommentBegin_=": <<'_CommentEnd_'"

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

你可以这样使用它:

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

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

shell脚本上没有块注释。

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

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

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

联合国的评论是

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

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

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

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

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(因为这是粘贴的快捷键)。

你可以使用:

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