shell學習三十七天----引用

來源:互聯網
上載者:User

標籤:shell

引用

案例,如果我想輸出一個星號(*),使用echo如何做?

echo *

這是肯定不行的,需要將*轉移,即:echo \*

這樣就引出了引用的概念.所為引用,是用來防止shell將某些你想要的東西解釋成不同的意義.如果你希望某些可能被shell視為個別參數的東西保持為單個參數,這時你就必須將其引用.

引用的三種方式:

反斜線轉義

字元前置反斜線(\),用來告知shell該字元即為其字面上的意義.

單引號

單引號(‘...’)強制shell將一對引號之間的所有字元都看做其字面上的意義.shell指令碼會刪除這兩個引號,只單獨留下被括起來的完整文字內容:

命令:echo ‘here are some character * ? ` $ \‘

輸出:here are some character * ? ` $ \

不能再一個單引號引用的字串裡再內嵌一個單引號.即使是反斜線,在單引號裡也沒有特殊意義(某些系統裡,像echo ‘A\tB’這樣的命令看起來像是shell特別的處理反斜線,其實不然,這是echo命令本身有特殊的處理方式)

 

如需混用單引號和雙引號,可以小心的使用反斜線轉義以及不同引用字串的串連來做到:

命令:echo ‘he said "how‘\‘‘s tricks?"‘

輸出:he said "how‘s tricks?"

命令”echo "she replied ,\"movin‘ along\""

輸出:she replied ,"movin‘ along"

不管怎麼處理,這種結合方式永遠是很難閱讀的.

雙引號

雙引號(“...”)就像單引號那樣,將括起來的文字視為單一字串.只不過,雙引號會確切的處理括起來文字中的逸出字元和變數,算術,命令替換:

x=hahaha

echo “$x”

輸出:hahaha

在雙引號裡,字元$,”,`與\,如需用到字面上的意義,都必須前置\.任何其他字元前面的反斜線是不帶特殊意義的.序列\-newline會完全的被刪除,就好像是用在指令碼裡的本文中一樣.

單引號被括在雙引號裡時就無特殊意義了,他們不必承兌,也不許轉移.

命令:echo "hahah‘"

輸出:hahah‘

 

一般來說,使用單引號的時機是希望完全不處理的地方.否則,當希望將多個單詞視為單一字串,但又需要shell為你做些事情,此時使用雙引號,例如將一個變數值與另一個變數值連在一起:

oldvar=”$oldvar $newvar”

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

shell學習三十七天----引用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.