在我們寫 shell 指令碼的時候,特別在除錯的時候經常需要注釋多行命令,但在每一行前輸入#
,顯得有些麻煩。
基於 shell 命令的靈活性,我們可以使用下面的方法:
方法一(這是比較穩妥的作法):可以採用here document
特性,實現多行注釋,比如
<<'comment'
...comment
舉例如下:
#!/bin/bash
echo
"say something"
<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
。
如此一來,此方法是不是很絕妙? 但事實上裡面潛藏著很多問題:
它不會注釋 shell 指令碼中本身帶有單引號
的語句部分,除非你將程式中的單引號全部換成又引號,這樣不爽。
還是就是,雖然:
會忽視後面的引數,但其實引數部分還是可能會被執行些操作,比如替換操作,檔案擷取操作等。所以這樣會影響到**的執行效率。
例如:
: > file
會擷取 file 。
: $(dangerous command)
這個替換操作照樣會執行。
所以第二種方法,只能臨時用用。
第三種方法,即:採用:
+<< 'comment'
的方式。
#!/bin/bash
echo
"say something"
: <<'comment'
your comment 1
comment 2
blah
comment
echo
"do something else"
注意:要加上單引號部分,有時候雖然不加不會有什麼問題,但還是要加,以防出現莫名其妙的意外發生,比如發生字元擴充套件,命令替換等。
但最保險的方法還是每行前加上#
shell多行注釋詳解
我們寫shell指令碼時,經常需要注釋多行,但在每一行前輸入 有些麻煩。基於 shell命令的靈活性,我們可以使用下面的方法。格式 comment comment例子 bin bash echo say something 1 注釋行2 注釋行n comment冒號 可用於多行注釋。格式 空格 單引...
shell 多行注釋詳解
在我們寫 shell 指令碼的時候,特別在除錯的時候經常需要注釋多行命令,但在每一行前輸入 顯得有些麻煩。基於 shell 命令的靈活性,我們可以使用下面的方法 方法一 這是比較穩妥的作法 可以採用here document特性,實現多行注釋,比如 comment comment舉例如下 bin b...
shell 多行注釋 2
由於shell不支援直接多行注釋,總結了以下shell注釋多行的變通方法 一 通過here documents和 實現 1 最簡單方法 注釋內容 block 把輸入重定義到前面的命令,但是 是空命令,所以就相當於注釋了。如果注釋中有反引號的命令就會報錯。反引號部分沒被注釋掉,例如ab ls l ab...