shell 多行注釋詳解

2021-07-15 09:24:10 字數 1899 閱讀 6657

在我們寫 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...