Answers:
在bash中:
#!/bin/bash
echo before comment
: <<'END'
bla bla
blurfl
END
echo after comment
在'
和'
周围的END
分隔符是重要的,否则里面的东西例如像块$(command)
将被解析并执行。
EOF
是一个经典示例(!
感叹号本身也是如此),但是您可以使用SNURFLE_BURGERS
或classical_end_marker
或任何其他在注释掉的材料中不会单独出现在一行上的单词。我会尝试使用空格等,但这个词也很适合它们。
:
),该命令不读取其输入,并且始终以成功值退出,并发送“注释”作为输入。没什么。
在shell脚本上没有任何块注释。
使用vi
(yes,vi
),您可以轻松地从第n行到m行注释
<ESC>
:10,100s/^/#/
(从第10行到第100行读取带有#号的替代行开头(^)。)
并用发表评论
<ESC>
:10,100s/^#//
(即从第10行到第100行的替换行开头(^),后跟#,并注明//。)
vi
在任何地方几乎都是普遍的/bin/sh
。
|noh
到结尾。管道分隔其他命令,并且noh
不突出显示。下次您搜索内容时,搜索词突出显示将自动恢复。范例::10,100s/^/#/g|noh
<SHIFT>+G 10 <ENTER>
然后0
通过任何其他导航方式)。然后使用<CTRL>+V
进入可视块模式并突出显示要注释的所有行的开头(在此示例中90 J
)。然后按SHIFT+I
插入突出显示的块之前。输入注释符号(例如#
),然后按<ESC>
完成前缀。这个解释听起来很长,但是以我的经验,它在实践中要快得多。
您可以使用:
if [ 1 -eq 0 ]; then
echo "The code that you want commented out goes here."
echo "This echo statement will not be called."
fi
if [ ];
也可以工作。
if false;
。 stackoverflow.com/a/18019516/2097284
以下应该适用于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"
在上面的示例中。
如果可以避开单引号:
__='
blah blah comment.
'
在Vim中:
shift-V
(进入视觉模式),在块中上下突出显示行:s/^/#/
该命令将如下所示:
:'<,'>s/^/#
点击进入
例如
shift-V
jjj
:s/^/#
<enter>
:s/^#/
您可以使用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而不是ctrl-v进入Visual Block模式(因为这是粘贴的快捷方式)。
老实说,为什么要进行过多的工程...
我认为编写用于生成被动代码的主动代码确实是一个坏习惯。
我的解决方案:大多数编辑器都具有块选择模式。只需使用它在要注释掉的所有行中添加#。有什么大不了的...
记事本示例:
要创建:Alt-向下拖动鼠标,按#。
删除:向下按住Alt键,向右移动箭头,然后删除。
sunny256接受的答案中的this-doc技巧的一种变化是使用Perl关键字进行注释。如果您的注释实际上是某种文档,则可以开始在注释块内使用Perl语法,该语法允许您将其打印出格式正确的格式,并将其转换为手册页等。
就外壳而言,您只需要替换'END'
为'=cut'
。
echo "before comment"
: <<'=cut'
=pod
=head1 NAME
podtest.sh - Example shell script with embedded POD documentation
etc.
=cut
echo "after comment"
(位于“ 在shell脚本中嵌入文档 ”中)