有人能建议如何注解shell脚本中除#之外的特定行吗?假设我想注解五行,除了给每一行加上#,还有其他方法注解这五行吗?
#
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。)
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命令中,这样您就可以将希望注解掉的代码括起来
heredoc
echo <<EOF ... EOF
它将获取两个EOF之间包含的所有代码,并将它们提供给echo(echo不从stdin读取,因此所有代码都被丢弃)。注意,使用上面的代码,你可以在heredoc中放入任何东西,它不必是有效的shell代码(也就是说,它不必正确解析)。这是非常令人讨厌的,我只是作为一个兴趣点提供它。你不能做C的/* ... */的等价物
echo
/* ... */
e4eetjau3#
对于单行注解,在行首添加**#**对于多行注解,从您希望开始的位置添加**'(单引号),并在您希望结束注解行的位置添加'**(再次使用单引号)。
yeotifhr4#
您必须依赖于'#',但为了使任务在vi中更容易,您可以执行以下操作(先按escape):
:10,20 s/^/#
其中10和20是要注解掉的行的起始行号和结束行号并在完成后撤消:
:10,20 s/^#//
hmmo2u0o5#
例如:#这整行都是注解,不会被执行
例如:〈〈评论名称现在这整个部分都是注解,直到你不再指定注解名称来结束注解部分。注解名称
5条答案
按热度按时间cclgggtu1#
您可以使用条件注解脚本的部分。
例如,下面的脚本:
将输出:
为了 * 取消注解 * 代码的这一部分,您只需要注解变量:
(这样做将打印数字1到7。)
46qrfjad2#
是的(虽然这是一个 * 讨厌的 * 黑客)。你可以这样使用heredoc:
heredoc
将以下所有输入直到终止符(在本例中为EOF)都馈送到nominal命令中,这样您就可以将希望注解掉的代码括起来它将获取两个EOF之间包含的所有代码,并将它们提供给
echo
(echo
不从stdin读取,因此所有代码都被丢弃)。注意,使用上面的代码,你可以在
heredoc
中放入任何东西,它不必是有效的shell代码(也就是说,它不必正确解析)。这是非常令人讨厌的,我只是作为一个兴趣点提供它。你不能做C的
/* ... */
的等价物e4eetjau3#
对于单行注解,在行首添加**#**
对于多行注解,从您希望开始的位置添加**'(单引号),并在您希望结束注解行的位置添加'**(再次使用单引号)。
yeotifhr4#
您必须依赖于'#',但为了使任务在vi中更容易,您可以执行以下操作(先按escape):
其中10和20是要注解掉的行的起始行号和结束行号
并在完成后撤消:
hmmo2u0o5#
例如:#这整行都是注解,不会被执行
例如:
〈〈评论名称
现在这整个部分都是注解,直到你不再指定注解名称来结束注解部分。
注解名称