73

谁能建议如何评论 shell 脚本中的特定行而不是#

假设我想评论五行。除了添加#到每一行之外,还有其他方法可以评论这五行吗?

4

4 回答 4

36

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

例如,以下脚本:

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。)

于 2013-08-21T10:11:17.367 回答
25

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

#!/bin/sh

# do valuable stuff here
touch /tmp/a

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

这是在做什么?Aheredoc将直到终止符(在本例中为 EOF)的所有以下输入馈送到指定的命令中。因此,您可以将要注释掉的代码括起来

echo <<EOF
...
EOF

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

请注意,使用上述内容,您可以将任何内容放入heredoc. 它不必是有效的shell 代码(即不必正确解析)。

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

于 2013-08-21T10:09:17.923 回答
10

对于单行注释,在行首添加 #对于
多行注释 ,从您想要开始的位置添加 '(单引号)并在您想要结束注释行的位置添加 ' (再次单引号)

于 2018-12-10T07:18:00.827 回答
5

您必须依赖 '#' 但为了在 vi 中更轻松地完成任务,您可以执行以下操作(先按退出键):

:10,20 s/^/#

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

完成后撤消:

:10,20 s/^#//
于 2018-01-25T16:19:13.170 回答