如何在 Bash 腳本中添加注釋
在 Bash 腳本中添加注釋是保持代碼整潔且易于理解的最有效方法之一。
你可能會問為什么。
假設你的腳本包含一個復雜的正則表達式或多個復雜的代碼塊,在這種情況下,你可以添加注釋,以便其他開發人員或你可以了解該代碼塊的含義。
注釋掉部分代碼也有助于調試腳本。
在本教程中,我將引導你了解在 Bash 腳本中添加注釋的三種方法:
- 單行注釋
- 行內評論
- 多行注釋
那么讓我們從第一個開始。
Bash 中的單行注釋
要添加單行注釋,你必須將哈希符號(#
)放在行的開頭并編寫注釋。
這是一個簡單的例子:
#!/bin/bash
# This is a comment
echo "Hello, World!"
執行時,注釋將被忽略,當我執行上面的命令時,它看起來像這樣:
??
#
注釋規則的唯一例外是腳本開頭的#!/bin/bash
行。它稱為 釋伴,用于指定運行腳本時要使用的解釋器。有不同的 Shell,語法也可能不同。因此,一個好的做法是指定腳本是為哪個 Shell 編寫的。例如,如果是 ksh,則可以使用#!/bin/ksh
.
Bash 腳本中的內聯注釋
或者,你可以將注釋放在代碼塊內以記錄該特定行的用途。
??
#
之后的任何內容在該行結束之前都不會執行,因此請確保在代碼末尾添加注釋。
這是一個簡單的例子:
#!/bin/bash
echo "Hello, World!" #Prints hello world
Bash 中的多行注釋
?? Bash 中沒有內置的多行注釋功能。但是,有一些解決方法可以實現多行注釋效果。
顧名思義,Bash 腳本中的多行注釋允許你在多行中編寫注釋,或者通過將它們放在多行注釋部分來阻止執行代碼塊:
- 在每行的開頭使用
#
- 冒號表示法(使用冒號后跟單引號)
- 現場文檔(使用
<<
后跟分隔符)
那么讓我們從第一個開始。
1、對塊注釋的每一行使用 #
如果你的目的是解釋腳本的一部分,我建議使用此方法。畢竟,#
才是真正的注釋功能。
這也是許多開發人員使用的方法。
假設你必須在一開始就解釋腳本的用途、作者信息或許可信息。你可以這樣寫:
#!/bin/bash
######################################
## This script is used for scanning ##
## local network ##
## Licensed under GPL 2.0 ##
######################################
這個 Bash 腳本的其它部分……
當你想說明 Bash 腳本的行為方式時這不錯。如果你正在調試 Bash 腳本并希望隱藏部分腳本,則在所需代碼的每一行開頭添加 #
并在調試后將其刪除是一項耗時的任務。
接下來的兩節將幫助你做到這一點。
2、冒號表示法
要使用冒號表示法,請在 : '
和結束的 '
之間編寫塊注釋,如下所示:
#!/bin/bash
: '
This is how you can use colon notation
And this line too will be ignored
'
echo "GOODBYE"
當你執行上面的腳本時,它應該只打印 GOODBYE
。
3、現場文檔
到目前為止,這是在 Bash 中編寫多行注釋的最流行的方法,你可以使用 <<
后跟分隔符(一組用于指定注釋開始和結束的字符)。
(LCTT 譯注:在編程領域,“here document” 是一個常見的術語,特指在腳本語言(如 Perl、Bash)中,能夠直接在代碼內部嵌入并處理一個數據塊或文本串的技術。盡管傳統上我們將它翻譯為“嵌入式文檔” 或不翻譯,但這個譯法似乎并不能完全地體現出原文的感覺和含義。為了讓這個概念變得更為直觀和易理解,我們建議將 “here document” 翻譯為 “現場文檔”。“現場”相比于“嵌入式”,更好的傳達了文檔就在代碼的當前位置,或代碼“現場”的含義。這樣的譯法也與原文 “here document” 中 “here”(這里)的含義更為契合。我們希望這個譯法能夠在未來得到更廣泛的使用和認可,讓編程的世界因語言的精準而變得更美好。PS., 該譯法和解釋得到了 ChatGPT 的建議和生成。)
使用方法如下:
#!/bin/bash
<<DELIMITER
Comment line 1
Comment line 2
DELIMITER
echo "Hello, World!"
還困惑嗎? 這是一個簡單的例子:
#!/bin/bash
<<COMMENT
This is a multi-line comment using a here document.
You can add as many lines as you want between <<COMMENT and the terminating keyword.
This block won't be executed by the shell.
COMMENT
echo "Hello, World!"
在上面的示例中,我使用了 COMMENT
作為分隔符,但你可以使用任何內容,但要確保它從注釋中脫穎而出,否則會造成混亂。
當我執行上面的腳本時,它給出了以下輸出:
正如你所看到的,它忽略了從 <<COMMENT
到 COMMENT
的所有內容。
我希望本指南對你有所幫助。