有人可以建议如何评论除#
以外的shell脚本中的特定行吗?
假设我要评论五行。而不是向每一行添加#
,还有其他方式来评论这五行吗?
答案 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之间包含的所有代码并将它们提供给echo
(echo
不会从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)
对于单行注释,请在行首添加#
对于多行注释,请在要开始的位置添加'(单引号),并在要结束注释行的位置添加'(再次使用单引号)。