在咱們寫 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
。
如此一來,此方法是否是很絕妙? 但事實上裏面潛藏着不少問題:
單引號
的語句部分,除非你將程序中的單引號所有換成又引號,這樣不爽。:
會忽視後面的參數,但其實參數部分仍是可能會被執行些操做,好比替換操做,文件截取操做等。因此這樣會影響到代碼的執行效率。 : > file
會截取 file 。 : $(dangerous command)
這個替換操做照樣會執行。因此第二種方法,只能臨時用用。
第三種方法,即:採用 :
+ << 'COMMENT'
的方式。
#!/bin/bash echo "Say Something" : <<'COMMENT' your comment 1 comment 2 blah COMMENT echo "Do something else"
注意:要加上單引號部分,有時候雖然不加不會有什麼問題,但仍是要加,以防出現莫名其妙的意外發生,好比發生字符擴展,命令替換等。
但最保險的方法仍是每行前加上 #