shell 多行注释详解

在咱们写 shell 脚本的时候,特别在调试的时候常常须要注释多行命令,但在每一行前输入 # ,显得有些麻烦。python

基于 shell 命令的灵活性,咱们可使用下面的方法:shell

方法一(这是比较稳妥的做法):能够采用 HERE DOCUMENT 特性,实现多行注释,好比bash

<<'COMMENT'
...

COMMENT

举例以下:性能

#!/bin/bash
echo "Say Something"
<<COMMENT
    your comment 1
    comment 2
    blah
COMMENT
echo "Do something else"

方法二 ,直接采用 : 这个命令的特殊做用,但这种作法有不少局限性,并且会影响性能,下面会介绍它的原理及性能分析。调试

以下是最简单的使用方法:code

: '
COMMENT1
COMMENT2
'

即 : + 空格 + 单引号字符串

解释以下:it

首先要知道 : 在 shell 中的特殊做用,它是内置的命令,先看一下它的帮助说明:性能分析

$ help : 
:: : 
Null command. 
No effect; the command does nothing. 
Exit Status: 
Always succeeds.效率

即,: 它也是一个命令,既然是命令就会能够给它传参数,但因它会过滤掉这些参数,而单引号括起来的是普通的代码部分表示字符串,因此咱们恰好可未来用来表明注释,表示在 : 后的 单引号括起来的部分在程序执行的时候忽略。

另外若是很差理解,直接把它看成汇编中的 NOP, python 中的 pass ,它只是一个占位,每次返回都是真,即 $? 的话,结果会是 0 。

如此一来,此方法是否是很绝妙? 但事实上里面潜藏着不少问题:

  1. 不会注释 shell 脚本中自己带有单引号的语句部分,除非你将程序中的单引号所有换成又引号,这样不爽。
  2. 仍是就是,虽然 : 会忽视后面的参数,但其实参数部分仍是可能会被执行些操做,好比替换操做,文件截取操做等。因此这样会影响到代码的执行效率。 
    例如: 
    : > file 会截取 file 。 
    : $(dangerous command) 这个替换操做照样会执行。

因此第二种方法,只能临时用用。

第三种方法,即:采用 : + << 'COMMENT' 的方式。

#!/bin/bash
echo "Say Something"
: <<'COMMENT'
    your comment 1
    comment 2
    blah
COMMENT
echo "Do something else"

注意:要加上单引号部分,有时候虽然不加不会有什么问题,但仍是要加,以防出现莫名其妙的意外发生,好比发生字符扩展,命令替换等。

但最保险的方法仍是每行前加上 #

相关文章
相关标签/搜索