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的/* ... */
单行评论:
以。。开始 ”#”
例如:
# 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)
您必须依靠“#”,但要使任务在vi中更容易,您可以执行以下操作(首先按转义):
:10,20 s/^/#
Run Code Online (Sandbox Code Playgroud)
其中10和20是要注释掉的行的开始和结束行号
并在完成后撤消:
:10,20 s/^#//
Run Code Online (Sandbox Code Playgroud)