一、單引號和雙引號
首先,單引號和雙引號,都是為了解決中間有空格的問題。
因為空格在linux中時作為乙個很典型的分隔符,比如string1=this is astring,這樣執行就會報錯。為了避免這個問題,因此就產生了單引號和雙引號。他們的區別在於,單引號將剝奪其中的所有字元的特殊含義,而雙引號中的'$'(引數替換)和'`'(命令替換)是例外。所以,兩者基本上沒有什麼區別,除非在內容中遇到了引數替換符$和命令替換符`。
所以下面的結果:
num=3
echo 『$num』
$num
echo 「$num」
3所以,如果需要在雙引號」」裡面使用這兩種符號,需要用反斜槓轉義。
二、反引號``
三、小括號,中括號,和大括號的區別
那麼,下面又涉及到了乙個問題,就是小括號,中括號,和大括號的區別。
先說說小括號和大括號的區別。這兩者,實際上是「命令群組」的概念,也就是commandgroup。
( ) 把 command group 放在subshell去執行,也叫做 nested sub-shell。
則是在同乙個 shell 內完成,也稱為 non-namedcommand group。
所以說,如果在shell裡面執行「函式」,需要用到{},實際上也就是乙個命令群組麼。
不過,根據實測,test=$(ls -a)可以執行,但是test=$語法上面是有錯誤的。估計也和上面所說的原因有關。
另外,從網上摘錄的區別如下:
a,()只是對一串命令重新開乙個子shell進行執行
b,{}對一串命令在當前shell執行
c,()和{}都是把一串的命令放在括號裡面,並且命令之間用;號隔開
d,()最後乙個命令可以不用分號
e,{}最後乙個命令要用分號
f,{}的第乙個命令和左括號之間必須要有乙個空格
g,()裡的各命令不必和括號有空格
h,()和{}中括號裡面的某個命令的重定向只影響該命令,但括號外的重定向則影響到括號裡的所有命令
兩個括號(()),是代表算數擴充套件,就是對其包括的東西進行標準的算數計算——注意,不能算浮點數,如果需要算浮點數,需要用bc做。
至於中括號,感覺作用就是用來比較的。比如放在if語句裡面,while語句裡面,等等。
這裡引出來[..]和[[…]]的區別:(摘自網上,實測證實):使用[[... ]]條件判斷結構, 而不是[ ... ], 能夠防止指令碼中的許多邏輯錯誤.比如,&&, ||, <,和》 操作符能夠正常存在於[[ ]]條件判斷結構中, 但是如果出現在[ ]結構中的話,會報錯。
shell中單引號 雙引號 反引號
一 單引號和雙引號 首先,單引號和雙引號,都是為了解決中間有空格的問題。因為空格在linux中時作為乙個很典型的分隔符,比如string1 this is astring,這樣執行就會報錯。為了避免這個問題,因此就產生了單引號和雙引號。他們的區別在於,單引號將剝奪其中的所有字元的特殊含義,而雙引號中...
shell中單引號,雙引號,變數
variable value variable value variable value url website1 c語言中文網 website2 c語言中文網 echo website1 echo website2 執行結果 c語言中文網 c語言中文網 以單引號 包圍變數的值時,單引號裡面是什麼就...
shell中的單引號 雙引號 反引號
在shell中引號分為三種 單引號,雙引號和反引號。由單引號括起來的字元都作為普通字元出現。特殊字元用單引號括起來以後,也會失去原有意義,而只作為普通字元解釋。單引號用於保持引號內所有字元的字面值,即使引號內的 和回車也不例外,但是字串中不能出現單引號。注意是所有,只是單引號本身不能夠出現在其中 例...