Linux shell中各種引號的正確使用

在編程中腳本時,我們經常需要用到各種符號,比如說單引號" ,雙引號""等等。下面我們通過一些例子來正確使用各種引號。

雙引號

下面來看看官方的手冊裏面是怎麼介紹的雙引號的:

Double Quotes
Enclosing characters in double quotes (‘"’) preserves the literal value of all characters within the quotes, with the exception of ‘KaTeX parse error: Undefined control sequence: \’ at position 10: ’, ‘`’, ‘\̲’̲, and, when his…’ and ‘’ retain their special meaning within double quotes (see Shell Expansions). The backslash retains its special meaning only when followed by one of the following characters: ‘$’, ‘’, ‘"’, ‘\’, or newline. Within double quotes, backslashes that are followed by one of these characters are removed. Backslashes preceding characters without a special meaning are left unmodified. A double quote may be quoted within double quotes by preceding it with a backslash. If enabled, history expansion will be performed unless an ‘!’ appearing in double quotes is escaped using a backslash. The backslash preceding the ‘!’ is not removed.
The special parameters ‘*’ and ‘@’ have special meaning when in double quotes (see Shell Parameter Expansion).

大概意思是說:大概意思是說:雙引號中的信息會保留字面量,但是同時會對$,`,,這些符號做出特殊的解析。就是雙引號中的變量和轉義,和函數操作可以被正常解析出來。

實例

創建文件
在這裏插入圖片描述

這裏可以看到雙引號的作用是引用一個整體。上面的內容是,創建一個文件,空格代表文件名的一部分。

在Linux系統中,會把雙引號中的內容當作是一個整體。

獲取當前系統用戶登錄數量

在這裏插入圖片描述

賬戶登錄輸出結果爲2,在雙引號中 $ 符做出特殊的解析。who查看有哪些賬戶在什麼時候登錄計算機。wc命令可以自動統計數據的行數。我們使用管道將who和wc命令結合在一起使用。

當前系統進程變量

在這裏插入圖片描述

Linux下顯示系統進程的命令ps,最常用的有ps -ef 和ps aux。

單引號

看看官方的手冊裏面是怎麼介紹的單引號的:

Single Quotes:
Enclosing characters in single quotes (‘’’) preserves the literal value of each character within the quotes. A single quote may not occur between single quotes, even when preceded by a backslash.

翻譯出來就是:用單引號(’’’)括起字符可以保留引號中每個字符的字面值。單引號之間可能不會出現單引號,即使前面有反斜槓也是如此。

在這裏插入圖片描述

從上面的信息可以看,輸入了三個單引號,或者兩個單引號之間是一個帶反斜杆的單引號。都會出現>的符號,意思是等待繼續的輸入。

實例

在shell中,#符號是特殊含義的,表示註釋符號。在終端上輸入echo #,沒有內容顯示。輸出結果是空白。

在這裏插入圖片描述

而在終端上使用單引號,將#符號的特殊符號含義屏蔽掉。

在這裏插入圖片描述

在shell中$符號表示提前變量的特殊含義。比如:

在這裏插入圖片描述
使用單引號後$符號就變成了一個普通符號。

在這裏插入圖片描述

反引號

反引號的功能是命令替換,在反引號``中的內容通常是命令行,程序會優先執行反引號中的內容,並使用運行結果替換掉反引號處的內容。舉個例子:

在這裏插入圖片描述

這行命令會先執行反引號中的命令 date,然後用 echo 命令打印出 date 命令的結果(與直接使用 date 命令效果一樣)。

下面使用tar命令進行備份,使用``符號實現命令替換。把數據備份到當前目錄下。

tar -czf date +%Y%m%d.tar.gz /var/log/

在這裏插入圖片描述

輸出結果替換date命令本身的字符串,最後備份的文件名爲20200528.tar.gz ,文件名中具體的時間根據執行命令時的計算機系統時間而定。

總結

寫shell腳本的時候,如果不需要解析裏面的內容,就使用單引號,反之,雙引號。記住shell解析單引號和雙引號的規則,是就近原則。以上是個人的一些總結,可能還不全面,如果有不正確的地方還望指正。

在這裏插入圖片描述

歡迎關注公衆號【程序猿編碼】,添加本人微信號(17865354792),回覆:領取學習資料。或者回復:進入技術交流羣。網盤資料有如下:

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章