linux脚本注释,UNIX-在Shell脚本中注释掉一组行

UNIX-在Shell脚本中注释掉一组行

我想知道是否有办法在shell脚本中注释掉一组行。我该怎么办? 我们可以在其他编程语言中使用/ * * /。这在我转换/使用/修改另一个脚本时最有用我想保留原始行而不是删除。

对于所有未使用的行,查找并添加#前缀似乎很麻烦。

可以说脚本中有100行,因此不需要使用这些行。我想一口气评论他们。 那可能吗?

10个解决方案

46 votes

if false

then

...code...

fi

false始终返回false,因此将始终跳过代码。

Artelius answered 2020-01-27T09:51:51Z

45 votes

最通用,最安全的方法是将评论置于引号中:'comment

text',像这样:

<

This long comment text includes ${parameter:=expansion}

`command substitution` and $((arithmetic++ + --expansion)).

COMMENT

引用上面的:'comment

text'定界符对于防止参数很有必要扩展,命令替换和算术扩展否则,如Bash手册所述和POSIX Shell标准所指定。

在上述情况下,不引用:'comment

text'将导致变量:"comment text"被分配文本expansion,如果为空或未设置,则执行命令command substitution,递增变量arithmetic和递减变量expansion。

比较其他解决方案:

使用:'comment

text'需要注释文本为语法上正确的Bash代码,而自然注释通常不是仅用于可能的不平衡撇号。 :"comment text"也是如此构造。

就像:'comment

text'中那样,将注释放入单引号的void命令自变量中具有无法包含撇号的缺点。 双引号自变量,例如:"comment text"中的参数,仍需进行参数扩展,命令替换和算术扩展,与未引用的相同本文档内容可能会导致上述副作用。

使用脚本和编辑器工具来自动为每个行添加前缀带“#”的块有一些优点,但不能完全回答问题。

spbnick answered 2020-01-27T09:52:39Z

26 votes

您还可以使用以下方法添加多行注释:

: '

comment1comment1

comment2comment2

comment3comment3

comment4comment4

'

根据Bourne Shell内置参考

:(冒号)

:[参数]

除了扩展参数和执行重定向之外,什么也不要做。 返回状态为零。

感谢Ikram在后的Shell脚本中指出多行注释这一点

asev69 answered 2020-01-27T09:53:21Z

20 votes

您可以使用没有命令的“此处”文档来发送文档。

#!/bin/bash

echo "Say Something"

<

your comment 1

comment 2

blah

COMMENT1

echo "Do something else"

维基百科参考

Buggabill answered 2020-01-27T09:53:45Z

9 votes

文本编辑器具有一个惊人的功能,称为搜索和替换。 您没有说使用什么编辑器,但是由于shell脚本通常是* nix,而我使用的是VI,因此以下命令注释了一些shell脚本的第20至50行:

:20,50s/^/#/

kdgregory answered 2020-01-27T09:54:06Z

5 votes

: || {

your code here

your code here

your code here

your code here

}

jj_5698 answered 2020-01-27T09:54:21Z

2 votes

如果只是将代码包装成函数怎么办?

所以这:

cd ~/documents

mkdir test

echo "useless script" > about.txt

变成这个:

CommentedOutBlock() {

cd ~/documents

mkdir test

echo "useless script" > about.txt

}

Buksy answered 2020-01-27T09:54:49Z

1 votes

根据此网站:

#!/bin/bash

foo=bar

: '

This is a test comment

Author foo bar

Released under GNU

'

echo "Init..."

# rest of script

user2763554 answered 2020-01-27T09:55:09Z

0 votes

根据您所使用的编辑器,有一些注释一行行的快捷方式。

另一个解决方法是将您的代码放在“ if(0)”条件块中;)

Carlos Tasada answered 2020-01-27T09:55:34Z

-1 votes

该Perl单线注释掉文件orig.sh(含第一行)的第1至3行(其中第一行编号为0),并将注释版本写入cmt.sh。

perl -n -e '$s=1;$e=3; $_="#$_" if $i>=$s&&$i<=$e;print;$i++' orig.sh > cmt.sh

显然,您可以根据需要更改边界号。

如果要在适当位置编辑文件,它会更短:

perl -in -e '$s=1;$e=3; $_="#$_" if $i>=$s&&$i<=$e;print;$i++' orig.sh

演示版

$ cat orig.sh

a

b

c

d

e

f

$ perl -n -e '$s=1;$e=3; $_="#$_" if $i>=$s&&$i<=$e;print;$i++' orig.sh > cmt.sh

$ cat cmt.sh

a

#b

#c

#d

e

f

ire_and_curses answered 2020-01-27T09:56:07Z

你可能感兴趣的:(linux脚本注释)