shell 多行注釋詳解


在我們寫 shell 腳本的時候,特別在調試的時候經常需要注釋多行命令,但在每一行前輸入 # ,顯得有些麻煩。

基於 shell 命令的靈活性,我們可以使用下面的方法:

方法一(這是比較穩妥的作法):可以采用 HERE DOCUMENT 特性,實現多行注釋,比如

<<'COMMENT'
...

COMMENT

舉例如下:

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

方法二 ,直接采用 : 這個命令的特殊作用,但這種做法有很多局限性,而且會影響性能,下面會介紹它的原理及性能分析。

如下是最簡單的使用方法:

: '
COMMENT1
COMMENT2
'

: + 空格 + 單引號

解釋如下:

首先要知道 : 在 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"

注意:要加上單引號部分,有時候雖然不加不會有什么問題,但還是要加,以防出現莫名其妙的意外發生,比如發生字符擴展,命令替換等。

但最保險的方法還是每行前加上 #


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com