shell程式設計中,單引號,雙引號,各種括號的區別

2021-09-22 19:31:23 字數 1270 閱讀 8819

一、單引號和雙引號

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

因為空格在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中引號分為三種 單引號,雙引號和反引號。由單引號括起來的字元都作為普通字元出現。特殊字元用單引號括起來以後,也會失去原有意義,而只作為普通字元解釋。單引號用於保持引號內所有字元的字面值,即使引號內的 和回車也不例外,但是字串中不能出現單引號。注意是所有,只是單引號本身不能夠出現在其中 例...