Art*_*ius 46
if false
then
...code...
fi
Run Code Online (Sandbox Code Playgroud)
false 总是返回false,所以这将总是跳过代码.
spb*_*ick 45
最通用和最安全的方法是将注释放入引用的空白中
here-document,如下所示:
<<"COMMENT"
This long comment text includes ${parameter:=expansion}
`command substitution` and $((arithmetic++ + --expansion)).
COMMENT
Run Code Online (Sandbox Code Playgroud)
引用COMMENT上面的分隔符是必要的,以防止参数扩展,命令替换和算术扩展,否则会发生,如Bash手动状态和POSIX shell标准所指定的那样.
在上面的例子中,没有引用COMMENT会导致变量parameter
被赋值文本expansion,如果它是空的或未设置,执行命令
command substitution,递增变量arithmetic和递减变量expansion.
比较其他解决方案:
使用if false; then comment text fi要求注释文本在语法上是正确的Bash代码,而自然注释通常不是,如果仅用于可能的不平衡撇号.这同样适用于: || { comment text }
结构.
将注释放入单引号的void命令参数中,如下所示:'comment
text',其缺点是无法包含撇号.双引号参数:"comment text"仍然受参数扩展,命令替换和算术扩展的影响,与未引用的here-document内容相同,可能导致上述副作用.
使用脚本和编辑器工具自动为带有'#'的块中的每一行添加前缀有一些优点,但并不能完全回答这个问题.
小智 27
您还可以使用以下方式添加多行注释:
: '
comment1comment1
comment2comment2
comment3comment3
comment4comment4
'
Run Code Online (Sandbox Code Playgroud)
根据Bourne Shell内置的Bash参考
:(冒号)
:[参数]
除了扩展参数和执行重定向之外什么都不做.返回状态为零.
感谢Ikram在Shell脚本中指出了这一点,并提出了多行评论
Bug*_*ill 20
您可以使用"here"文档而不使用命令将其发送到.
#!/bin/bash
echo "Say Something"
<<COMMENT1
your comment 1
comment 2
blah
COMMENT1
echo "Do something else"
Run Code Online (Sandbox Code Playgroud)
文本编辑器具有称为搜索和替换的惊人功能.你没有说你使用的编辑器,但由于shell脚本往往是*nix,我使用VI,这里是命令来评论某些shell脚本的第20到50行:
:20,50s/^/#/
Run Code Online (Sandbox Code Playgroud)
小智 5
: || {
your code here
your code here
your code here
your code here
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
126310 次 |
| 最近记录: |