是否有一种简单的方法可以在shell脚本中注释掉一段代码?
答案 0 :(得分:310)
在bash中:
#!/bin/bash
echo before comment
: <<'END'
bla bla
blurfl
END
echo after comment
'
分隔符周围的'
和END
非常重要,否则块内的内容(例如$(command)
)将被解析并执行。
答案 1 :(得分:81)
shell脚本没有阻止评论。
使用vi
(是的,vi
)您可以轻松地从 n 行注释到 m
<ESC>
:10,100s/^/#/
(从第10行到第100行,用#符号替换行开头(^)。)
并取消评论
<ESC>
:10,100s/^#//
(读取,从第10行到第100行替换行开头(^)后跟#注释//。)
vi
在/bin/sh
的任何地方几乎都是通用的。
答案 2 :(得分:45)
您可以使用:
if [ 1 -eq 0 ]; then
echo "The code that you want commented out goes here."
echo "This echo statement will not be called."
fi
答案 3 :(得分:25)
以下内容适用于sh
,bash
,ksh
和zsh
。
要评论的代码块可以放在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"
在上面的示例中。
答案 4 :(得分:22)
如果你能躲避单引号:
__='
blah blah comment.
'
答案 5 :(得分:14)
在Vim:
shift-V
(进入可视模式),向上突出显示块:s/^/#/
命令如下所示:
:'<,'>s/^/#
点击
e.g。
shift-V
jjj
:s/^/#
<enter>
答案 6 :(得分:4)
你可以使用Vi / Vim的Visual Block模式,它是为这样的东西设计的:
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(因为这是粘贴的快捷方式)。
答案 7 :(得分:2)
这么多过度工程......
我认为编写用于生成被动代码的活动代码确实是一种不好的做法。
我的解决方案:大多数编辑器都有块选择模式。只需使用它将#添加到要注释掉的所有行。 有什么大不了的......
记事本示例:
创建:Alt - mousedrag down,按#。
删除:Alt-mousedrag down,shift-right arrow,delete。
答案 8 :(得分:1)
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"
(发现于&#34; Embedding documentation in shell script&#34;)
答案 9 :(得分:0)
另一种模式是: 如果您的编辑者没有BLOCK注释选项,
完成
它可以与任何编辑器一起使用
答案 10 :(得分:0)
答案 11 :(得分:0)
我喜欢单行打开和关闭:
if [ ]; then ##
...
...
fi; ##
“ ##”可帮助我轻松地找到块注释的开始和结束。如果有很多的话,我可以在“ ##”后面加上一个数字。要关闭评论,只需在“ []”中添加“ 1”即可。我还避免了在注释块中出现单引号问题。
答案 12 :(得分:0)
您可以将代码放在函数内进行注释。这样做的好处是您可以通过在定义之后调用函数来“取消注释”。
除非您计划通过调用函数来“取消注释”,否则函数内的文本不必在语法上正确。
docker
许多 GUI 编辑器将允许您选择一个文本块,然后按“{”自动将大括号括在选定的代码块周围。