shell中單引號 雙引號 反引號的使用

2021-06-22 05:34:32 字數 1764 閱讀 8521

**:

在編寫shell指令碼時,會經常地使用到單引號、雙引號、反引號這些特殊的符號。它們在shell中有著不同的作用,但容易被誤用和引起混亂。簡單總結一下三者的使用和區別。

它關閉shell中所有的特殊符號使用和解釋,即單引號間的內容全部以普通字元的含義進行文字使用和解釋,不管是特殊字元 $ ,還是轉義字元之類的。例子:

~$ a=12;test='this is a $a \$ `date`';echo $test

this is a $a \$ `date`

它關閉shell中大部分的特殊符號,但是某些保留,比如 $ ,轉義字元 \(不包括\n,\t之類),反引號字元,單引號字元在雙引號中時作為普通字元,不具有上面的功能作用。例子:

~$ a=12;test="this is a $a \b `date`";echo $test

this is a 12 \b thu mar 21 15:24:45 hkt 2013

~$ a=12;test="'this is a $a \b `date`'";echo $test

'this is a 12 \b thu mar 21 15:32:09 hkt 2013'

~$ a=12;test="this is a $a \n `date`";echo $test

this is a 12 \n thu mar 21 15:40:09 hkt 2013

~$ a=12;test="this is a $a \$ `date`";echo $test

this is a 12 $ thu mar 21 15:40:38 hkt 2013

單引號、雙引號用於把帶有空格的字串賦值給變數,如果沒有單引號或雙引號,shell會把空格後的字串解釋為命令,即把空格作為變數賦值的結束。

~$ a=13;test1=this is a $a \b `date`; echo $test1

is: command not found

特別注意:在shell指令碼中進行變數的賦值時,變數名、等號和變數值之間不能有空格,否則就是上面一樣的錯誤。

它的作用是命令替換,將其中的字串當成shell命令執行,返回命令的執行結果,見上面的例子。反引號包括的字串必須是能執行的命令,否則會出錯。例子:

~$ a=12;test=`this is a $a \b `date``;echo $test

no command 'this' found, did you mean:

command 'thin' from package 'thin' (universe)

this: command not found

date

符號$( )的作用和反引號的一樣,都是命令替換:

~$ echo $(date)

thu mar 21 15:54:15 hkt 2013

反斜槓一般用作轉義字元,如果echo要讓轉義字元發生作用,就要使用-e選項,且包含轉義字元的字串要使用雙引號

~$ echo "this is a \n test"

this is a \n test

~$ echo -e "this is a \n test"

this is a

test

反斜槓的另一種作用,就是當反斜槓用於一行的最後乙個字元時,shell把行尾的反斜槓作為續行,這種結構在分幾行輸入長命令時經常使用。

shell中單引號 雙引號 反引號

一 單引號和雙引號 首先,單引號和雙引號,都是為了解決中間有空格的問題。因為空格在linux中時作為乙個很典型的分隔符,比如string1 this is astring,這樣執行就會報錯。為了避免這個問題,因此就產生了單引號和雙引號。他們的區別在於,單引號將剝奪其中的所有字元的特殊含義,而雙引號中...

Shell單引號,雙引號,反引號,反斜槓

shell單引號,雙引號,反引號,反斜槓 shell可以識別4種不同型別的引字符號 單引號字元 雙引號字元 反斜槓字元 反引號字元 1.單引號 grep susan phonebook susan goldberg 403 212 4921 susan topple 212 234 2343 如果我...

shell中的單引號 雙引號 反引號

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