1. 程式人生 > 其它 >shell(1):關於反引號單引號和雙引號的區別

shell(1):關於反引號單引號和雙引號的區別

一、單引號和雙引號

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

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

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

二、反引號``

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