由於shell不支援直接多行注釋,總結了以下shell注釋多行的變通方法一、通過here documents和:實現
1、最簡單方法
:<....注釋內容
block
把輸入重定義到前面的命令,但是:是空命令,所以就相當於注釋了。
如果注釋中有反引號的命令就會報錯。反引號部分沒被注釋掉,例如ab=`ls -l abc`就不會被注釋掉。
2、解決注釋中有反引號的問題
a、方法一
:<....注釋內容
'block
b、方法二
:<<'block
....注釋內容
block'
c、方法三
:<<'
....注釋內容
'以上三種方法都是通過在:<
block為here documents中的定義符號可以隨意起名,只要前後匹配就行了
3、簡單說說:指令和here documents
:就是什麼也不作(do nothing)即空命令。它的最基本作用就是在if,then條件中。在if語句中各部分必須接執行命令,但有時你不在乎條件是為真(或假)只在乎相反情況。
例如如果檢測存在某路徑什麼也不做,不存在就echo報錯。可寫為
if [ -d $directory ];
then : #do nothing
eles
echo "the directory do not exit "
fi下面的例子
commandfile content
word
是here documents的用法,意思是將以上的定義符(word,也可以理解成本地文件名)傳給某指令碼或命令,word的內容為兩個word間輸入任意內容(word為here documents中的定義符號可以隨意起名,只要前後匹配就行了),這樣就可以在指令碼中用command來執行輸入而不必再重建一檔案。
常用在選單螢幕中,例如:
cat <1. list files
2.help
3.exit
menu
:<....注釋內容
word
就類似於建一本地檔案,然後對它執行空命令,也就是什麼也不做,就相當於注釋了。
更詳細的here document說明可參考
二、通過迴圈實現
1、while和:實現
while :
do break
注釋內容
done
2、until和:實現
until :
注釋內容
done
注意注釋內容中是否含」done」,包含會造成意外結束迴圈
三、其它方法
1、方法一
: :||:<<\comments
....注釋內容
comments
高手說上面這種方法最好,因為here documents部分不會執行到,只會分析到,應該不會對第二個:作實際的io重定向。
2、方法二
: << 'block' 可以將裡面的變數擴充套件關閉掉。
例如::~> a=b
:~> cat <> this is \$a: $a
> end
this is $a: b
:~> cat <<'end'
> this is \$a: $a
> end
this is \$a: $a
3、方法三
:||這種方法不用到here documents,不過這種方法要注意注釋內容中的}
4、方法四
:<<\eof
....注釋內容
eof上面方法可關掉here documents中的擴充套件功能,在here-document中忽略ending marker前的任何字元
實際上使用<<\eof <<『eof』,甚至<<<\eof在語法上面更加的簡潔。不過這種方法同樣要注意注釋內容中的eof
shell 多行注釋詳解
在我們寫 shell 指令碼的時候,特別在除錯的時候經常需要注釋多行命令,但在每一行前輸入 顯得有些麻煩。基於 shell 命令的靈活性,我們可以使用下面的方法 方法一 這是比較穩妥的作法 可以採用here document特性,實現多行注釋,比如 comment comment舉例如下 bin b...
Shell多行注釋寫法
假設我們想注釋多行 在bash中,我們可以這麼寫 這裡寫注釋內容 比如,沒注釋前,我的腳步是這樣的 bin bash export path gogoal platform ggopenapi play 1.2.7 path echo 構建後的路徑pwd pwd whoami cd home dev...
shell多行注釋詳解
我們寫shell指令碼時,經常需要注釋多行,但在每一行前輸入 有些麻煩。基於 shell命令的靈活性,我們可以使用下面的方法。格式 comment comment例子 bin bash echo say something 1 注釋行2 注釋行n comment冒號 可用於多行注釋。格式 空格 單引...