Linux 中引號的那些事
| 2012-07-18 08:04 收藏: 2
引號
我們將把編寫指令碼的事情暫時擱在一邊,然後來討論一些,我們一直在用的,但是沒有解釋的東西。引號在這一節裡面,我們會講述引號。引號有兩個作用:
- 控制字元替換 和
- 執行將單詞包含在一起的功能
我們已經使用過引號。在我們的指令碼里面,將文字資訊賦值給常量的賦值操作就使用了引號:
在上面這個例子中,文字資訊是被雙引號包括住的。我們使用雙引號的原因是---我們要把所有單詞包括住,當作一個整體來對待。如果我們沒有使用引號,那麼bash直譯器,就會將所有位於第一個單詞後面的單詞,解釋為其他的命令(第一個單詞被解釋為命令)。
嘗試一下執行下面的命令,看看有什麼效果出來:
單引號和雙引號
shell直譯器可以識別雙引號和單引號。 下面的複製表示式效果是等價的:
然而,在雙引號和單引號之間存在一個重要的差別。 單引號,在字元替換方面有限制。 正如我們在上一節所看到的內容一樣,你可以將一個變數放在雙引號裡面,而shell直譯器依然會對變數執行字元替換的操作。
我們可以透過使用echo命令來檢視這種效果:
如果我們將上述的雙引號改為單引號,那麼,行為將會改變:
雙引號並沒有限制---以"$"開頭的變數的字元替換,不過,它的確對萬用字元的擴充套件效果進行了限制。比如,下面這個例子:
引用單個字元
還有另外一種引用字元你會碰到的。 它就是反斜槓。The backslash tells 反斜槓告訴shell直譯器忽略反斜槓符後面的第一個字元。比如:
透過使用反斜槓符,shell直譯器忽略了對"$"符號進行解釋。既然shell已經忽略了"$",那麼,shell直譯器也就不會對$HOSTNAME執行字元替換了。 下面,給出一個更有用例子:
正如你所看到的,透過使用反斜槓符號,我們可以將雙引號包含在文字里面。
反斜槓的其他使用技巧
如果,你閱讀過任何軟體的使用手冊,並且這手冊是由GNU專案完成的,那麼,你會發現,在軟體的命令選項中,除了以一個下劃線_加一個字母的形式出現之外,還有,以兩個下劃線加一個完整的單詞的形式出現。例如,下面兩個語句是等價的:
為什麼在軟體中,這兩種形式都是支援的呢?短的那種形式,是專門為那些懶的輸入員而設定的,而長的那種形式,是專門為寫指令碼而存在的。我有時候,是混合著使用上面的兩種形式,然後,我發現採用長的命令選項有用,如果,我寫了一個指令碼,並且,我將在幾個月後去閱讀它。看到長的命令選項,有助於我理解這個命令選項是什麼意思,從而省卻我去查man手冊的功夫。現在多敲幾下鍵盤,會以後節省很多功夫。 這樣,懶惰的原則就保持住了。
你有可能會疑慮,使用長的命令形式,會導致一個單獨的命令變得很長。 為了與這個問題鬥爭,你可以使用反斜槓來讓shell直譯器忽略換行符號,正如下面的操作:
這樣使用反斜槓,可以讓我們將每行的內容包含在一個單獨的命令中。讓這個技巧可以應用,要注意的地方:換行,必須在反斜槓後面馬上出現(也就是,在輸入了反斜槓之後,就必須換行了)。 如果,你將一個空格符放置在反斜槓後面,那麼,空格符號會被忽略,而不是換行符被忽略。反斜槓符,也可以被用於,將特殊的符號插入到文字。special characters into our text. 這些符號,被叫做---轉移字元,下面就有一些轉移字元:
跳脫字元 ....................... |
名字 |
可能的用途 |
n |
換行符 |
新增空白行在文字中 |
t |
製表符 |
將水平製表符新增到文字中 |
a |
提醒 |
讓你的終端發出嘟嘟聲。 |
\ |
反斜槓 |
插入一個反斜槓符 |
f |
formfeed |
Sending this to your printer ejects thepage |
轉移字元的應用很常見。非常常見轉移字元,這個想法,首先出現在C語言裡面。程式語言今天,shell解釋程式,C++,perl,python,awk,tcl和其他程式語言都使用了轉移字元這個概念。透過使用echo命令的-e選項,我們將展示上述轉移字元的應用:
來自:http://article.yeeyan.org/view/90556/299613
相關文章
- Linux中單引號和雙引號的使用方法及注意事項!Linux
- Linux Shell 中的反引號,單引號,雙引號Linux
- linux bash中的引號:單雙引號、反撇號Linux
- 有關PHP、HTML單引號、雙引號轉義以及轉成HTML實體的那些事!PHPHTML
- linux 單引號,雙引號,反引號Linux
- javascript中this那些事JavaScript
- linux中安全和許可權那些事Linux
- Git 中的那些可怕的事Git
- Oracle中的 單引號 和 雙引號Oracle
- 郵件功能中的那些事
- ThreeJS 中線的那些事JS
- shell 指令碼中雙引號、單引號、反引號的區別指令碼
- Python中 單引號,雙引號和三引號的區別Python
- js中如何在引號中巢狀引號JS巢狀
- 談談 Java 中的那些“瑣”事Java
- JavaScript 中 setTimeout 的那些事兒JavaScript
- shell中單引號、雙引號、反引號、反斜槓的區別
- Oracle中單引號和雙引號的區別Oracle
- PHP中單引號和雙引號的區別PHP
- python中單引號,雙引號,多引號區別Python
- PHP中引號的用法PHP
- Oracle中單引號與雙引號的區別分析Oracle
- Docker容器中應避免的那些事兒Docker
- EF中延遲載入的那些事
- 關於Swift中的指標的那些事Swift指標
- Java中的陣列 - Java那些事兒Java陣列
- iOS 程式設計中 throttle 的那些事iOS程式設計
- 關於爛程式碼的那些事(中)
- Linux Shell 單引號 雙引號 使用區別Linux
- 我和Linux那些事(2)-----CentOSLinuxCentOS
- 關於Javascript中的”use strict”的那些事JavaScript
- 談談jQuery中Ajax那些事jQuery
- PHP中對單引號和雙引號的區別(好文)PHP
- js如何在引號中巢狀使用引號JS巢狀
- Synchronized的那些事synchronized
- webassembly 的那些事Web
- ViewPager的那些事Viewpager
- shell中定義變數用雙引號和單引號以及不用引號的區別變數