是否有一种简单的方法来注释掉shell脚本中的代码块?
在bash中:
#!/bin/bash echo before comment : <<'END' bla bla blurfl END echo after comment
END分隔符周围的'和'很重要,否则块内的内容(例如$(command))将被解析并执行。
END
'
$(command)
有关解释,请参见这和这问题。
shell脚本上没有块注释。
使用vi(是的,vi),你可以轻松地从n行注释到米行
vi
<ESC> :10,100s/^/#/
(从第10行到第100行,用#符号代替第(^)行。)
联合国的评论是
<ESC> :10,100s/^#//
(从第10行到第100行,替换行开始(^),后面跟着#,并注明//。)
vi几乎在任何有/bin/sh的地方都是通用的。
/bin/sh
在Vim中:
shift-V
:s/^/#/
命令如下:
:'<,'>s/^/#
hit enter
e.g.
shift-V jjj :s/^/# <enter>
你可以使用:
if [ 1 -eq 0 ]; then echo "The code that you want commented out goes here." echo "This echo statement will not be called." fi
如果你能避开单引号:
__=' blah blah comment. '
下面应该适用于sh,bash, ksh和zsh。
sh
bash
ksh
zsh
要注释的代码块可以放在BEGINCOMMENT和ENDCOMMENT中:
BEGINCOMMENT
ENDCOMMENT
[ -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"
在上面的例子中。
你可以使用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(因为这是粘贴的快捷键)。
sunny256给出的已接受的答案中的here-doc技巧的一个变体是使用Perl关键字进行注释。如果您的注释实际上是某种文档,那么您可以开始在注释块中使用Perl语法,这允许您将其打印出来,将其转换为手册页,等等。
就shell而言,你只需要用'=cut'替换'END'。
'=cut'
'END'
echo "before comment" : <<'=cut' =pod =head1 NAME podtest.sh - Example shell script with embedded POD documentation etc. =cut echo "after comment"
(在"在shell脚本中嵌入文档"上找到)
老实说,为什么要这么过度设计……
我认为编写主动代码来生成被动代码是一种糟糕的做法。
记事本的例子:
创建方法:Alt -鼠标向下拖动,按#。
删除:alt -鼠标向下拖动,右移箭头,删除。
完成
它适用于任何编辑器
使用: '打开,'关闭。
: '
例如:
: ' This is a very neat comment in bash '
这是从维加斯的例子找到在这里
我喜欢单线开闭:
if [ ]; then ## ... ... fi; ##
“##”可以帮助我轻松地找到块注释的开始和结束。我可以在“##”后面加上一个数字,如果我有很多的话。要关闭注释,我只需在“[]”中插入一个“1”。我还避免了在注释块中使用单引号时遇到的一些问题。
可以将注释代码放在函数中。这样做的好处是你可以“不评论”。通过在定义之后调用函数。
除非你打算“不评论”;通过调用函数,函数内的文本不必在语法上正确。
ignored() { echo this is comment echo another line of comment }
许多GUI编辑器将允许您选择一个文本块,并按"{"自动在选定的代码块周围加上大括号。
让我们把这些最好的想法和建议结合起来。
alias _CommentBegin_=": <<'_CommentEnd_'"
如前所述,单引号非常重要,因为没有它们 $(commandName)和${varName}将被求值
你可以这样使用它:
_CommentBegin_ echo "bash code" or none code can be in here _CommentEnd_
别名使使用更加明显和更好看。
在vscode ctrl+K+C (ctrl+K+U取消注释)。