除了 #之外,有人能建议如何在 shell 脚本中注释特定的行吗?
#
假设我想注释五行。除了将 #添加到每一行之外,还有其他方法来注释这五行吗?
是的(虽然它是一个 恶心黑客)。你可以使用一个 Herdoc这样:
#!/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)到指定的命令中。因此,您可以将要注释掉的代码包围起来
heredoc
echo <<EOF ... EOF
它将获取两个 EOF 之间包含的所有代码,并将它们提供给 echo(echo不从 stdin 读取,因此它将被丢弃)。
echo
注意,使用上面的代码,您可以将任何内容放入 heredoc中。它不必是有效的 shell 代码(也就是说,它不必进行正确的解析)。
这是非常肮脏的,我提供它只是作为一个利益点。你不能做相当于 C 的 /* ... */
/* ... */
可以使用条件语句对脚本的注释部分进行注释。
例如,下面的脚本:
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。)
你必须依赖“ #”,但是为了使任务在 vi 中更容易执行,你可以执行以下操作(首先按转义键) :
:10,20 s/^/#
用10和20作为要注释掉的行的起始行号和结束行号
并在完成后撤销:
:10,20 s/^#//
对于单行注释,在行首添加 # 为多行注释添加 '(单引号)从您想要开始的地方,并添加 '(再次单引号)在您想要结束注释行的点。