shell 多行註釋詳解
在我們寫 shell 指令碼的時候,特別在除錯的時候經常需要註釋多行命令,但在每一行前輸入 #
,顯得有些麻煩。
基於 shell 命令的靈活性,我們可以使用下面的方法:
方法一(這是比較穩妥的作法):可以採用 HERE DOCUMENT
特性,實現多行註釋,比如
<<'COMMENT'
...
COMMENT
舉例如下:
#!/bin/bash
echo "Say Something"
<<COMMENT
your comment 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
: $(dangerous command)
這個替換操作照樣會執行。
所以第二種方法,只能臨時用用。
第三種方法,即:採用 :
+ << 'COMMENT'
的方式。
#!/bin/bash
echo "Say Something"
: <<'COMMENT'
your comment 1
comment 2
blah
COMMENT
echo "Do something else"
注意:要加上單引號部分,有時候雖然不加不會有什麼問題,但還是要加,以防出現莫名其妙的意外發生,比如發生字元擴充套件,命令替換等。
但最保險的方法還是每行前加上 #
相關推薦
shell 多行註釋詳解
在我們寫 shell 指令碼的時候,特別在除錯的時候經常需要註釋多行命令,但在每一行前輸入 # ,顯得有些麻煩。 基於 shell 命令的靈活性,我們可以使用下面的方法: 方法一(這是比較穩妥的作法):可以採用 HERE DOCUMENT 特性,實現多行註釋
【Shell】單行註釋和多行註釋
單行註釋 ‘# ‘ # echo "hello" 多行註釋 方法1 : << ! 這是註釋1 這是註釋2 這是註釋3 ! 方法2 :' 這是註釋1 這是
shell 中的單行註釋和多行註釋
Original url: http://blog.csdn.net/lansesl2008/article/details/20558369 1. 單行註釋 眾所周知,# 比如想要註釋:echo “ni” # echo "ni" 2. 多行註釋: 法一: : &l
shell的單行註釋和多行註釋
1、單行註釋 以#號開頭的行就是註釋,注意第一行除外(比較特殊) $ cat tets.sh #!/bin/bash #echo "I am renwoxing" #<==以#號
關於shell腳本里的單行註釋和多行註釋方法
以“#”開頭的行就是註釋,會被直譯器忽略。 sh裡沒有多行註釋,只能每一行加一個#號。只能像這樣: #-------------------------------------------- # 這是一個自動打ipa的指令碼,基於webfrogs的ipa-build書寫:
shell指令碼——註釋(單行註釋 多行註釋)
單行註釋以"#"開頭的行就是註釋,會被直譯器忽略。#--------------------------------------------# 這是一個註釋# author:菜鳥教程# site:www
Python單行註釋與多行註釋
單行 全局 速度 無法 第三方 本質 特性 最小 利用 >>> print "hello,world"hello,world>>> 2+24#單行註釋 """每行代碼的後面可以加上分號,但是不會有任何作用,除非同一行還有更多的代碼,
Java 多線程詳解(三)------線程的同步
alt 來看 監聽 介紹 創建進程 java 多線程 system ima 關鍵字 Java 多線程詳解(一)------概念的引入:http://www.cnblogs.com/ysocean/p/6882988.html Java 多線程詳解(二)------如何創建進
Python的單行、多行註釋
cnblogs ima images ges 分享 mage logs 多行 bsp 單行用# 多行用3個單引號‘或者3個雙引號" Python的單行、多行註釋
Nginx+Php-fpm運行原理詳解
pop 圖片 ron 什麽 地址 pan webserver family tid 一、代理與反向代理 現實生活中的例子 1、正向代理:訪問google.com 如上圖,因為google被墻,我們需要vpnFQ才能訪問google.com。 vpn對於“我們”來說,是可
OC學習小結之ios運行過程詳解
for cat 用戶 with res nbsp c學習 launch cati 1)ios核心類 UIView 視圖,屏幕上能看得見的東西都是視圖,例如:按鈕、文本標簽、和表格等 UIViewController:內部默認有個視圖(UIView),負責管理UIView的
JavaSE7基礎 單行註釋// 與 多行註釋 /**/
png 深入 img 4.2 div static ring 版本 blog jdk版本 :jdk-7u72-windows-i586系統 :Windows7編輯器 :Notepad++ v7.4.2註意事項 :博文內容僅供參考,不可用於其他用途。 代碼
iOS 運行時詳解
序列 get not oci protocol caption 聲明 實現 att 註:本篇文章轉自:http://www.jianshu.com/p/adf0d566c887 一、運行時簡介 Objective-C語言是一門動態語言,它將很多靜態語言在編譯和鏈接時期做的事
php multicast多播實現詳解
clas -s ria socket php文件 pan php set 廣播 什麽是多播? 網絡中存在3中傳播形式,單播,廣播,多播。 1. 單播 : 就是1->1 2. 廣播 : 1->多(廣播域內) 3. 多播 : 1->組(一組ip) 1
vim中如何設置多行註釋和刪除註釋
需要 visual 註釋符 註釋 命令行 多行 bsp nbsp 字母 多行註釋: 1. 進入命令行模式,按ctrl + v進入 visual block模式,然後按j, 或者k選中多行,把需要註釋的行標記起來 2. 按大寫字母I,再插入註釋符,例如# 3. 按esc鍵然後
eclipse多行註釋格式化代碼時自動添加的星號怎麽去掉?
都去 註釋格式 格式 style comment ble format com general 用eclipse的代碼格式化的時候,多行註釋的格式會被調亂,並且每行都添加一個星號在前,有沒有辦法設置這個多行註釋的格式化模版把這些個星號都去掉?Java->Code St
Python中的單行多行註釋符號
批量 輸出 12px pri 包含 padding auto p s mic 一、python單行註釋符號(#) 井號(#)常被用作單行註釋符號,在代碼中使用#時,它右邊的任何數據都會被忽略,當做是註釋。 print 1 #輸出1 #號右邊的內容在執行的時候是不會被輸出的。
tomcat運行方式詳解
java nio tomcat7 new 連接器 請求 nio max 網絡傳輸 block tomcat的運行模式有3種 一、bio(blocking I/O) 即阻塞式I/O操作,表示Tomcat使用的是傳統的Java I/O操作(即java.io包及其子包)。是基於J
【shell】Linux shell for 循環詳解
linux shell編程 for循環 運維 for 循環格式 for i in 條件 do 內容 done 實例循環1到10並打印 #!/bin/bash - for i in `seq 10` do echo $i done 版權所有:arppinging
html中的版本檢測註釋詳解
ext san eight CP play clas fff block html中 <!--[if !IE]><!--> 除IE外都可識別 <!--<![endif]--><!--[if IE]> 所有的IE可識別 &