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

cbeh67ev  于 2023-03-08  发布在  Unix
关注(0)|答案(5)|浏览(151)

有人能建议如何注解shell脚本中除#之外的特定行吗?
假设我想注解五行,除了给每一行加上#,还有其他方法注解这五行吗?

cclgggtu

cclgggtu1#

您可以使用条件注解脚本的部分。
例如,下面的脚本:

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

46qrfjad

46qrfjad2#

是的(虽然这是一个 * 讨厌的 * 黑客)。你可以这样使用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)都馈送到nominal命令中,这样您就可以将希望注解掉的代码括起来

echo <<EOF
...
EOF

它将获取两个EOF之间包含的所有代码,并将它们提供给echoecho不从stdin读取,因此所有代码都被丢弃)。
注意,使用上面的代码,你可以在heredoc中放入任何东西,它不必是有效的shell代码(也就是说,它不必正确解析)。
这是非常令人讨厌的,我只是作为一个兴趣点提供它。你不能做C的/* ... */的等价物

e4eetjau

e4eetjau3#

对于单行注解,在行首添加**#**
对于多行注解,从您希望开始的位置添加**'(单引号),并在您希望结束注解行的位置添加'**(再次使用单引号)。

yeotifhr

yeotifhr4#

您必须依赖于'#',但为了使任务在vi中更容易,您可以执行以下操作(先按escape):

:10,20 s/^/#

其中10和20是要注解掉的行的起始行号和结束行号
并在完成后撤消:

:10,20 s/^#//
hmmo2u0o

hmmo2u0o5#

    • 单行注解:**以"#"开头

例如:#这整行都是注解,不会被执行

    • 多行注解:**以"〈〈commentName"开头,以"commentName"结尾

例如:
〈〈评论名称
现在这整个部分都是注解,直到你不再指定注解名称来结束注解部分。
注解名称

相关问题