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

时间:2013-08-21 10:04:33

标签: shell unix sh

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

假设我要评论五行。而不是向每一行添加#,还有其他方式来评论这五行吗?

4 个答案:

答案 0 :(得分:33)

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

例如,以下脚本:

DEBUG=false
if ${DEBUG}; then
echo 1
echo 2
echo 3
echo 4
echo 5
fi
echo 6
echo 7

会输出:

6
7

为了取消注释代码部分,您只需要对变量进行注释:

#DEBUG=false

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

答案 1 :(得分:18)

是的(虽然这是一个讨厌的黑客)。您可以使用heredoc

#!/bin/sh

# do valuable stuff here
touch /tmp/a

# now comment out all the stuff below up to the EOF
echo <<EOF
...
...
...
EOF

这是做什么的? heredoc将所有以下输入提供给终结符(在本例中为EOF)到指定命令中。因此,您可以使用

包围要注释的代码
echo <<EOF
...
EOF

并且它将包含两个EOF之间包含的所有代码并将它们提供给echoecho不会从stdin读取所有内容都被丢弃了。)

请注意,通过上述内容,您可以在heredoc中添加任何内容。它不必是有效的shell代码(即它不必正确解析)。

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

答案 2 :(得分:4)

You have to rely on '#' but to make the task easier in vi you can perform the following (press escape first):

:10,20 s/^/#

with 10 and 20 being the start and end line numbers of the lines you want to comment out

and to undo when you are complete:

:10,20 s/^#//

答案 3 :(得分:2)

对于单行注释,请在行首添加
对于多行注释,请在要开始的位置添加'(单引号),并在要结束注释行的位置添加'(再次使用单引号)。