1、雙引號
雙引號「」通常用來表示引用乙個字串,有時能遮蔽一些標點等特殊符號。在命令中使用雙引號時,一般表示引用的部分是乙個不可分割的整體。
通常可以理解為所有放入雙引號中的內容都按照字串來處理,除非有另乙個引用號告知某個特殊字串具有特殊含義(例如變數等)。
(1)遮蔽特殊字元
[root@localhost ~]# echo tom jim kate jacktom jim kate jack
[root@localhost ~]# echo tom jim kate jack; mary romantom jim kate jack
bash: mary: command not found
上面這個示例中包含了特殊字元「;」(分號表示乙個命令的結束、另乙個命令的開始),因此引起了系統的誤解。像這種情況一般應該使用雙引號表示字串的引用:
[root@localhost ~]# echo "tom jim kate jack; mary roman
"tom jim kate jack; mary roman
(2)在雙引號中使用其他引用符
如果在雙引號引用的字串中引用,應該使用其他引用符號。例如使用「$」引用變數:
[root@localhost ~]# name="mary
"[root@localhost ~]# echo "
tom jim kate jack; mary roman $name
"tom jim kate jack; mary roman mary
除了變數引用符之外,還可以使用命令輸出引用符反引號(倒引號):
[root@localhost ~]# echo "now time:`date`
"now time:fri dec
608:09:33 cst 2013
(3)在命令中使用雙引號
在一些命令中還經常使用雙引號避免shell誤解選項的含義等。例如:
[root@localhost ~]# name="tom jim kate jack; mary roman mary
"[root@localhost ~]# echo $name |grep tom jim
grep: jim: no such file or directory
bash: echo: write error: broken pipe
[root@localhost ~]# echo $name | grep "
tom jim
"tom jim kate jack; mary roman mary
2、單引號
單引號『』的使用方法和作用與雙引號基本上一致(但有區別,見3),都是將引號中的內容都當作字串來處理。另外,單引號通常在一些特殊命令中與雙引號配合,表示引用中的引用(shell中不允許一條命令中的兩個引用號都使用雙引號或單引號)。
(1)使用上面的示例:
[root@localhost ~]# echo $name | grep 'tom jim
'tom jim kate jack; mary roman mary
(2)需要巢狀使用雙引號時,但是shell不允許,此時使用的方法是:雙引號內用單引號
[root@localhost ~]# awk 'begin
'20131206-08:26:05
3、雙引號與單引號的區別
(1)雙引號具有變數置換的功能,而單引號不具有變數置換的功能:
[root@localhost ~]# name="tom"
[root@localhost ~]# echo "
your name is:$name
"your name
is:tom
[root@localhost ~]# echo '
your name is:$name
'your name
is:$name
(2)雙引號具有命令置換的功能,而單引號不具有命令置換的功能:
[root@localhost ~]# echo 'now time:`date`
'now time:`date`
[root@localhost ~]# echo "
now time:`date`
"now time:fri dec
608:48:58 cst 2013
總之,單引號內的內容會原原本本的保持(也可以說單引號可以遮蔽其內的所有特殊字元),而雙引號內的內容會由於變數引用$或命令引用``而變化。
反引號``有時也稱為倒引號,這個鍵通常位於鍵盤的tab鍵上方、數字鍵1的左邊。反引號主要用來引用一些函式、命令輸出等,執行時系統會嘗試將反引號中的內容當作乙個命令去執行。
(1)命令中的命令
[root@localhost ~]# ls -l `cat /etc/shells`-rwxr-xr-x 1 root root 716972 jul 12
2006 /bin/bash
lrwxrwxrwx
1 root root 4 nov 12
23:57 /bin/csh ->tcsh
-rwxr-xr-x 1 root root 1169832 jan 16
2007 /bin/ksh
lrwxrwxrwx
1 root root 4 nov 12
23:52 /bin/sh ->bash
-rwxr-xr-x 1 root root 343756 oct 31
2006 /bin/tcsh
-rwxr-xr-x 1 root root 3236 jun 25
2007 /sbin/nologin
[root@localhost ~]# ls -l $(cat /etc/shells)-rwxr-xr-x 1 root root 716972 jul 12
2006 /bin/bash
lrwxrwxrwx
1 root root 4 nov 12
23:57 /bin/csh ->tcsh
-rwxr-xr-x 1 root root 1169832 jan 16
2007 /bin/ksh
lrwxrwxrwx
1 root root 4 nov 12
23:52 /bin/sh ->bash
-rwxr-xr-x 1 root root 343756 oct 31
2006 /bin/tcsh
-rwxr-xr-x 1 root root 3236 jun 25
2007 /sbin/nologin
(2)在字串中巢狀和使用乙個命令的情況:
[root@localhost ~]# echo "now time:`date +'%t'`
"now time:
08:35:44
[root@localhost ~]# echo "now time:$(date +'%t')
"now time:
08:55:35
[root@localhost ~]# date=`date`[root@localhost ~]# echo "
host time is:$date
"host time
is:fri dec 6
09:03:15 cst 2013
許多時候需要在輸出中使用這些特殊字元本身,這時應該使用反斜槓遮蔽其特殊的含義。
(1)例如要使用美元符號表示貨幣:
[root@localhost ~]# echo "please pay \$15.50.
"please pay $
15.50.
其實也可以使用單引號『』實現上述目的:
[root@localhost ~]# echo 'please pay $15.50.
'please pay $
15.50.
你要是在上面的$前加入反斜槓,連反斜槓的功能都被單引號『』遮蔽掉了,反斜槓也會原原本本的輸出:
[root@localhost ~]# echo 'please pay \$15.50.
'please pay \$
15.50.
命令中的特殊字元
小知識 表示乙個命令的結束 另乙個命令的開始 在windows中通常將一些正規表示式的基本字元稱為萬用字元,而在linux作業系統中人們則將這些基本字元稱為元字元。使用多個元字元組成的查詢表示式稱為匹配模式,使用匹配模式查詢的過程稱為 模式 匹配 字串引用符雙引號和單引號 雙引號和單引號的主要作用是...
Shell命令特殊字元
shell命令特殊字元 注釋 後台執行 把執行結果輸入到乙個指定的檔案中 把執行結果附加到乙個以存在的檔案後面 表示當前目錄 表示上一級目錄 最後一次執行的命令的返回碼 shell程序自己的pid shell程序最近啟動的後台程序的pid 命令列引數的個數 0 指令碼檔案本身的名字 1 2 第乙個,...
Shell命令特殊字元
shell命令特殊字元 注釋,以後臺方式執行。如 find name linux 取代命令字元。可用它將多個命令分隔開來,讓命令依次執行。重定向,把執行結果輸入到乙個檔案中。若該檔案已經存在,則原有內容會被充掉。如ls l aa.txt 把招待結果附加到乙個已存在的檔案後面。建立管線,將乙個命令的執...