官术网_书友最值得收藏!

1.2.6 轉義符

在計算機科學與遠程通信中,當將轉義符放在字符序列中時,它將對其后續的幾個字符進行替代并解釋。通常,可以通過上下文判定某字符是否為轉義符。轉義符即標志著轉義序列開始的那個字符。

轉義序列通常有兩種功能。第一種功能是編碼無法用字母表直接表示的特殊數據;第二種功能是表示無法直接通過鍵盤輸入的字符(如回車符)。

本節說的轉義符就對應第二種功能,即將轉義符自身和后面的字符看作一個整體,表示某種含義。常見的示例是用反斜線“\”作為轉義符,表示那些不可打印的ASCII控制符。另外,在統一資源標識符(Uniform Resource Identifier,URI)中,請求串中的一些符號有特殊含義,也需要轉義,轉義符使用百分號“%”。

V1-6 轉義符

在日常工作中經常會遇到轉義符,如在Shell中刪除文件時,如果文件名中有星號“*”,則需要轉義,使用了轉義符后,“*”就能作為文件名使用了。


rm access_log* # 刪除當前目錄下文件名以access_log開頭的文件
rm access_log\* # 刪除當前目錄下文件名為access_log*的文件

又如,在雙引號中又使用雙引號時就需要轉義,轉義之后才能正常表示雙引號,否則會報語法錯誤。例如:


printf "This is a string with \"double quotes\" inside it.\n"

輸出結果如下。


This is a string with "double quotes" inside it.

1. 反斜線

在Shell中,反斜線(\)是一個特殊字符,用于改變一些字符的含義。例如,可以使用反斜線來輸出特殊字符,或者將特殊字符視為普通字符。

Shell中有很多元字符,如果要查找星號(*)、加號(+)、問號(?)本身,而不是元字符,則需要對其進行轉義。常見的轉義序列如表1-9所示。

表1-9 常見的轉義序列

使用以下命令輸出一個反斜線字符:


echo "\\"

輸出結果如下。


\

反斜線也可以用來輸出其他特殊字符,如使用以下命令輸出換行符:


echo -e "Hello\nWorld"

輸出結果如下。


Hello
World

使用以下命令輸出一個水平制表符:


echo -e "Hello\tWorld"

輸出結果如下。


Hello World

2. 反引號

在Shell中,反引號(`)用于標識被執行的命令,并且命令的輸出會替換反引號中的內容,這稱為命令替換。

使用命令替換將命令的輸出賦給一個變量:


foo=`date`
echo $foo
Mon Jan 9 15:16:27 CST 2023

使用命令替換在其他命令中包含命令的輸出:


echo Today is `date`
Today is Thu Nov 23 05:33:29 PM CST 2023

如果將命令的輸出用作另一個命令的參數,或者將命令的輸出賦給一個變量以供腳本中以后使用,則命令替換可能很有用。注意,反引號字符和單引號(')字符不同,單引號用于標識應該被當作字面值處理的字符串,而不對其進行任何解釋或替換。

3. 雙引號

在Shell中,雙引號(")是一種特殊的字符,用于標識帶有變量或轉義符的字符串。雙引號作為轉義符時,可以方便地在字符串中輸出變量的值,以及輸出特殊字符。

使用雙引號時,變量名會被替換為變量的值,而轉義符會按照其原來的意義被解釋。例如:


name="John"
echo "My name is $name"
echo "This is a \"quote\""

輸出結果如下。


My name is John
This is a "quote"

在雙引號內,如果需要輸出雙引號本身,則可以使用反斜線(\)將其轉義。例如:


echo "This is a \"quote\""

輸出結果如下。


This is a "quote"

4. 單引號

在Shell中,單引號(')是一種特殊的字符,用于標識字符串,其中的內容不會被解釋。單引號作為轉義符時,可以方便地保留字符串中的內容。

使用單引號時,變量名和轉義符都不會被替換或解釋。例如:


name="John"
echo 'My name is $name'
echo 'This is a \"quote\"'

輸出結果如下。


My name is $name
This is a \"quote\"

如果需要在單引號內輸出單引號本身,則可以通過組合單引號和雙引號實現。例如:


echo 'This is a '"'"'quote'"'"''

輸出結果如下。


This is a 'quote'

主站蜘蛛池模板: 扬州市| 内丘县| 都安| 巴彦县| 阿克苏市| 会同县| 宣化县| 富民县| 平度市| 科技| 敖汉旗| 大田县| 红安县| 石渠县| 八宿县| 祁连县| 尉犁县| 峨山| 藁城市| 任丘市| 若尔盖县| 右玉县| 临江市| 铁岭市| 泰来县| 阳山县| 兴文县| 宜宾市| 隆昌县| 博兴县| 措美县| 康平县| 安顺市| 林芝县| 富源县| 铜梁县| 山西省| 广州市| 安远县| 大竹县| 屏东县|