是否有一种简单的方法来注释掉shell脚本中的代码块?
当前回答
如果你能避开单引号:
__='
blah blah comment.
'
其他回答
让我们把这些最好的想法和建议结合起来。
alias _CommentBegin_=": <<'_CommentEnd_'"
如前所述,单引号是非常重要的,因为没有它们 $(commandName)和${varName}将被计算。
你可以这样使用它:
_CommentBegin_
echo "bash code"
or
none code can be in here
_CommentEnd_
别名使使用更加明显和更好看。
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"
(参见“在shell脚本中嵌入文档”)
在bash中:
#!/bin/bash
echo before comment
: <<'END'
bla bla
blurfl
END
echo after comment
END分隔符周围的“和”很重要,否则块内的内容(例如$(命令))将被解析并执行。
关于解释,请看这个和这个问题。
可以将注释代码放在函数中。这样做的一个好处是,您可以通过在定义之后调用函数来“取消注释”。
除非您打算通过调用函数来“取消注释”,否则函数内的文本不必在语法上正确。
ignored() {
echo this is comment
echo another line of comment
}
许多GUI编辑器允许您选择一个文本块,然后按“{”自动在所选代码块周围加上花括号。
在vscode中ctrl+K+C (ctrl+K+U取消注释)。