shell中單引號、雙引號、反引號、反斜槓的區別
[url]http://haohetao.iteye.com/blog/1126560[/url]
http://hi.chinaunix.net/?306269/viewspace-44406
shell 可以識別4種不同型別的引字元號: 單引號 字元' 雙引號字元" 反斜槓字元\ 反引號字元`
[color=red][b]1. 單引號 ( '' )[/b][/color]
# grep Susan phonebook
Susan Goldberg 403-212-4921
Susan Topple 212-234-2343
如果我們想查詢的是Susan Goldberg,不能直接使用grep Susan Goldberg phonebook命令,grep會把Goldberg和phonebook當作需要搜尋的檔案
# grep 'Susan Gold' phonebook
Susan Goldberg 403-212-4921
當shell碰到第一個單引號時,它忽略掉其後直到右引號的所有特殊字元
[color=red][b]2. 雙引號 ( " " )[/b][/color]
雙 引號作用與單引號類似,區別在於它沒有那麼嚴格。單引號告訴shell忽略所有特殊字元,而雙引號只要求忽略大多數,具體說,括在雙引號中的三種特殊字元 不被忽略:$,\,` ,即雙引號會解釋字串的特別意思,而單引號直接使用字串.如果使用雙引號將字串賦給變數並反饋它,實際上與直接反饋變數並無差別。如果要查詢包含空 格的字串,經常會用到雙引號。
# x=*
# echo $x
hello.sh menus.sh misc.sh phonebook tshift.sh
# echo '$x'
$x
# echo "$x"
*
這 個例子可以看出無引號、單引號和雙引號之間的區別。在最後一種情況中,雙引號告訴shell在引號內照樣進行變數名替換,所以shell把$x替換為*, 因為雙引號中不做檔名替換,所以就把*作為要顯示的值傳遞給echo。 對於第一種情況需要進一步說明,shell在給變數賦值時不進行檔名替換(這從第三種情況中也能看出來),各步驟發生的精確次序如下: shell掃描命令 行,把x的值設為星號*;
shell再次掃描命令列,碰到星號*,把它替換成當前目錄下的檔案清單;
shell啟動執行echo命令,把檔案清單作為引數傳遞給echo.
這個賦值的先後次序非常重要:shell先作變數替換,然後作檔名替換,最後把這行處理為引數
[color=red][b]3. 反引號(``)[/b][/color]
命令替換是指shell能夠將一個命令的標準輸出插在一個命令列中任何位置。shell中有兩種方法作命令替換:把shell命令用反引號或者$(...)結構括起來,其中,$(...)格式受到POSIX標準支援,也利於巢狀。
# echo The date and time is `date`
The date and time is 三 6月 15 06:10:35 CST 2005
# echo Your current working directory is $(pwd)
Your current working directory is /home/howard/script.
[color=red][b]4. 反斜槓 backslash-escaped( \ )[/b][/color]
反斜槓一般用作轉義字元,或稱逃脫字元,linux如果echo要讓轉義字元發生作用,就要使用-e選項,且轉義字元要使用雙引號
echo -e "\n"
反斜槓的另一種作用,就是當反斜槓用於一行的最後一個字元時,shell把行尾的反斜槓作為續行,這種結構在分幾行輸入長命令時經常使用。
BTW
[color=red][b]$()和``的區別[/b][/color]
反引號和$()的功能是命令替換,將反引號或$()中的字串做為命令來執行,我們在用shell程式設計時經常用的到 將系統 命令的執行結果賦給一個變數
但反引號內不能再引用反引號,而$()中可以引用反引號
# cat aa
13
45
mimi bibi
# data=`cat `ls``
沒反應,我Ctrl+c了
# data=$(cat `ls`)
# echo $data
13 45 mimi bibi
http://hi.chinaunix.net/?306269/viewspace-44406
shell 可以識別4種不同型別的引字元號: 單引號 字元' 雙引號字元" 反斜槓字元\ 反引號字元`
[color=red][b]1. 單引號 ( '' )[/b][/color]
# grep Susan phonebook
Susan Goldberg 403-212-4921
Susan Topple 212-234-2343
如果我們想查詢的是Susan Goldberg,不能直接使用grep Susan Goldberg phonebook命令,grep會把Goldberg和phonebook當作需要搜尋的檔案
# grep 'Susan Gold' phonebook
Susan Goldberg 403-212-4921
當shell碰到第一個單引號時,它忽略掉其後直到右引號的所有特殊字元
[color=red][b]2. 雙引號 ( " " )[/b][/color]
雙 引號作用與單引號類似,區別在於它沒有那麼嚴格。單引號告訴shell忽略所有特殊字元,而雙引號只要求忽略大多數,具體說,括在雙引號中的三種特殊字元 不被忽略:$,\,` ,即雙引號會解釋字串的特別意思,而單引號直接使用字串.如果使用雙引號將字串賦給變數並反饋它,實際上與直接反饋變數並無差別。如果要查詢包含空 格的字串,經常會用到雙引號。
# x=*
# echo $x
hello.sh menus.sh misc.sh phonebook tshift.sh
# echo '$x'
$x
# echo "$x"
*
這 個例子可以看出無引號、單引號和雙引號之間的區別。在最後一種情況中,雙引號告訴shell在引號內照樣進行變數名替換,所以shell把$x替換為*, 因為雙引號中不做檔名替換,所以就把*作為要顯示的值傳遞給echo。 對於第一種情況需要進一步說明,shell在給變數賦值時不進行檔名替換(這從第三種情況中也能看出來),各步驟發生的精確次序如下: shell掃描命令 行,把x的值設為星號*;
shell再次掃描命令列,碰到星號*,把它替換成當前目錄下的檔案清單;
shell啟動執行echo命令,把檔案清單作為引數傳遞給echo.
這個賦值的先後次序非常重要:shell先作變數替換,然後作檔名替換,最後把這行處理為引數
[color=red][b]3. 反引號(``)[/b][/color]
命令替換是指shell能夠將一個命令的標準輸出插在一個命令列中任何位置。shell中有兩種方法作命令替換:把shell命令用反引號或者$(...)結構括起來,其中,$(...)格式受到POSIX標準支援,也利於巢狀。
# echo The date and time is `date`
The date and time is 三 6月 15 06:10:35 CST 2005
# echo Your current working directory is $(pwd)
Your current working directory is /home/howard/script.
[color=red][b]4. 反斜槓 backslash-escaped( \ )[/b][/color]
反斜槓一般用作轉義字元,或稱逃脫字元,linux如果echo要讓轉義字元發生作用,就要使用-e選項,且轉義字元要使用雙引號
echo -e "\n"
反斜槓的另一種作用,就是當反斜槓用於一行的最後一個字元時,shell把行尾的反斜槓作為續行,這種結構在分幾行輸入長命令時經常使用。
BTW
[color=red][b]$()和``的區別[/b][/color]
反引號和$()的功能是命令替換,將反引號或$()中的字串做為命令來執行,我們在用shell程式設計時經常用的到 將系統 命令的執行結果賦給一個變數
但反引號內不能再引用反引號,而$()中可以引用反引號
# cat aa
13
45
mimi bibi
# data=`cat `ls``
沒反應,我Ctrl+c了
# data=$(cat `ls`)
# echo $data
13 45 mimi bibi
相關文章
- shell 指令碼中雙引號、單引號、反引號的區別指令碼
- Linux Shell 中的反引號,單引號,雙引號Linux
- linux 單引號,雙引號,反引號Linux
- Golang的單引號、雙引號與反引號Golang
- linux bash中的引號:單雙引號、反撇號Linux
- Linux Shell 單引號 雙引號 使用區別Linux
- python中單引號,雙引號,多引號區別Python
- Python中 單引號,雙引號和三引號的區別Python
- Oracle中單引號和雙引號的區別Oracle
- PHP中單引號和雙引號的區別PHP
- shell中定義變數用雙引號和單引號以及不用引號的區別變數
- Oracle中單引號與雙引號的區別分析Oracle
- grep 後加單引號、雙引號和不加引號的區別
- PHP中對單引號和雙引號的區別(好文)PHP
- 關於 json 單引號和雙引號區別--請使用雙引號JSON
- mysql反引號和引號的用法MySql
- Oracle中的 單引號 和 雙引號Oracle
- javascript的雙引號和單引號的用法和區別JavaScript
- ORACLE 單引號 雙引號Oracle
- HTML 單引號與雙引號HTML
- oracle 裡的單引號與雙引號Oracle
- MYSQL特殊字元(單引號,行尾斜槓)的處理MySql字元
- oracle資料庫--Oracle雙引號和單引號的區別小結Oracle資料庫
- Jquery單引號和雙引號的使用注意jQuery
- SQL語句中的單引號與雙引號SQL
- oracle 中使用單引號(')和雙引號(")Oracle
- 【C進階】14、單引號和雙引號
- js中關於單引號和雙引號的一點用法JS
- asp.net中關於雙引號和單引號的用法ASP.NET
- 字串中包含單引號和雙引號怎麼處理字串
- 在ORACLE SQL語句中,單引號和雙引號的使用OracleSQL
- webstorm中程式碼新增單引號、雙引號快捷鍵WebORM
- lisp 裡的 ,@ 反引號 的解釋Lisp
- mysql建立表時反引號的作用MySql
- Linux中單引號和雙引號的使用方法及注意事項!Linux
- latex的雙引號 ``'
- mybatis大於號,小於號,去地址符,單引號,雙引號轉義說明MyBatis
- [譯]JavaScript:將字串兩邊的雙引號轉換成單引號JavaScript字串