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"

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

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

相關文章
相關標籤/搜索