linux shell 單引號 雙引號 反引號的區別

來源:互聯網
上載者:User

標籤:blog   http   使用   os   問題   html   linux   amp   

一、單引號和雙引號

首先, 單引號和雙引號,都是為瞭解決中間有空格的問題。

因為空白格在linux中時作為一個很典型的分隔字元,比如 string1=this is a string,這樣執行就會報錯。為了避免這個問題,因此就產生了單引號和雙引號。他們的區別在於,單引號將剝奪其中的所有字元的特殊含義,而雙引號中的 ‘$‘(參數替換)和‘`‘(命令替換)是例外。所以,兩者基本上沒有什麼區別,除非在內容中遇到了參數替換符$和命令替換符`。

所以下面的結果:
num=3
echo ‘$num’
$num
echo “$num”
3
所以,如果需要在雙引號””裡面使用這兩種符號,需要用反斜線轉義。

 

二、反引號``

這個東西的用法,我百度了一下,和$()是一樣的。在執行一條命令時,會先將其中的 `` ,或者是$() 中的語句當作命令執行一遍,再將結果加入到原命令中重新執行,例如:
echo `ls`
會先執行 ls 得到 xx.sh等,再替換原命令為:
echo xx.sh
最後執行結果為
xx.sh
那麼,平時我們遇到的把一堆命令的執行結果輸出到一個變數中,需要用這個命令替換符括起來,也就可以理解了。
這裡又涉及到了一個問題,雖然不少系統工程師在使用替換功能時,喜歡使用反引號將命令括起來。但是根據POSIX規範,要求系統工程師採用的是$(命令)的形式。所以,我們最好還是遵循這個規範,少用``,多用$()

 

三、小括弧,中括弧,和大括弧的區別

那麼,下面又涉及到了一個問題,就是小括弧,中括弧,和大括弧的區別。
先說說小括弧和大括弧的區別。這兩者,實際上是“命令群組”的概念,也就是command group。
( ) 把 command group 放在subshell 去執行,也叫做 nested sub-shell。
{ } 則是在同一個 shell 內完成,也稱為 non-named command group。
所以說,如果在shell裡面執行“函數”,需要用到{},實際上也就是一個命令群組麼。
不過,根據實測,test=$(ls -a)可以執行,但是test=${ls –a}文法上面是有錯誤的。估計也和上面所說的原因有關。

另外,從網上摘錄的區別如下:
A,()只是對一串命令重新開一個子shell進行執行
B,{}對一串命令在當前shell執行
C,()和{}都是把一串的命令放在括弧裡面,並且命令之間用;號隔開
D,()最後一個命令可以不用分號
E,{}最後一個命令要用分號
F,{}的第一個命令和左括弧之間必須要有一個空格
G,()裡的各命令不必和括弧有空格
H,()和{}中括弧裡面的某個命令的重新導向隻影響該命令,但括弧外的重新導向則影響到括弧裡的所有命令

兩個括弧(()),是代表算數擴充,就是對其包括的東西進行標準的算數計算——注意,不能算浮點數,如果需要算浮點數,需要用bc做。

至於中括弧[ ],感覺作用就是用來比較的。比如放在if語句裡面,while語句裡面,等等。
這裡引出來[..]和[[…]]的區別:(摘自網上,實測證實):使用[[ ... ]]條件判斷結構, 而不是[ ... ], 能夠防止指令碼中的許多邏輯錯誤. 比如,&&, ||, <, 和> 操作符能夠正常存在於[[ ]]條件判斷結構中, 但是如果出現在[ ]結構中的話, 會報錯。

轉自  http://blog.sina.com.cn/s/blog_96b8a15401013g0v.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.