如何注释掉shell脚本中的特定行

use*_*564 62 unix shell sh

任何人都可以建议如何评论除shell脚本之外的特定行#吗?

假设我要评论五行.而不是添加#到每一行,有没有其他方式来评论五行?

dev*_*ull 35

您可以使用条件语注释脚本的部分.

例如,以下脚本:

DEBUG=false
if ${DEBUG}; then
echo 1
echo 2
echo 3
echo 4
echo 5
fi
echo 6
echo 7
Run Code Online (Sandbox Code Playgroud)

输出:

6
7
Run Code Online (Sandbox Code Playgroud)

取消注释代码部分,您只需要注释变量:

#DEBUG=false
Run Code Online (Sandbox Code Playgroud)

(这样做会打印数字1到7.)


Bri*_*new 20

是的(虽然这是一个讨厌的黑客).你可以使用heredoc:

#!/bin/sh

# do valuable stuff here
touch /tmp/a

# now comment out all the stuff below up to the EOF
echo <<EOF
...
...
...
EOF
Run Code Online (Sandbox Code Playgroud)

这是做什么的?A heredoc将以下所有输入提供给终结器(在本例中为EOF)到指定命令中.因此,您可以将要注释的代码包围起来

echo <<EOF
...
EOF
Run Code Online (Sandbox Code Playgroud)

并且它将获取两个EOF之间包含的所有代码并将它们提供给echo(echo不会从stdin读取所以它们都会被丢弃).

请注意,通过上面你可以把任何东西放在heredoc.它不必是有效的shell代码(即它不必正确解析).

这是非常讨厌的,我只是作为一个兴趣点提供它.你不能做相当于C的/* ... */


Hei*_*bug 6

单行评论:

以。。开始 ”#”

例如:

# This whole line is a comment and will not be executed 
Run Code Online (Sandbox Code Playgroud)

多行评论:

以“<<commentName”开头并以“commentName”结尾

例如:

<<commentName 

Now this whole section is a comment,
until you specify the comment name again
to end the comment section.

commentName
Run Code Online (Sandbox Code Playgroud)


S. *_*use 5

您必须依靠“#”,但要使任务在vi中更容易,您可以执行以下操作(首先按转义):

:10,20 s/^/#
Run Code Online (Sandbox Code Playgroud)

其中10和20是要注释掉的行的开始和结束行号

并在完成后撤消:

:10,20 s/^#//
Run Code Online (Sandbox Code Playgroud)


Yas*_*hah 5

对于单行注释添加 在一行的开始
多行注释添加 要从哪里开始和补充(单引号) 在这里要结束注释行点(再次单引号)。