linux shell中,單引號、 雙引號,反引號(``),$()的區別

一、單引號和雙引號

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

空格在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規範,要求系統工程師採用的是$(命令)的形式。所以,我們最好還是遵循這個規範,少用``,多用$()

小龍博客

http://zhangzhiqiangli.blog.163.com/blog/static/459183842013829113850887/


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