Linux Shell中引號的用法

2021-07-27 09:59:39 字數 1855 閱讀 8731

shell可以識別4種不同型別的引字符號: 單引號字元' 雙引號字元" 反斜槓字元\ 反引號字元`

1. 單引號 ( ' ' )howard@0[script]$ grep susan phonebook

susan goldberg 403-212-4921

susan topple 212-234-2343

如果我們想查詢的是susan goldberg,不能直接使用grep susan goldberg phonebook命令,grep會把goldberg和phonebook當作需要搜尋的檔案

howard@0[script]$ grep 'susan gold' phonebook

susan goldberg 403-212-4921

當shell碰到第乙個單引號時,它忽略掉其後直到右引號的所有特殊字元

2. 雙引號 ( " " )雙引號作用與單引號類似,區別在於它沒有那麼嚴格。單引號告訴shell忽略所有特殊字元,而雙引號只要求忽略大多數,具體說,括在雙引號中的三種特殊字元不被忽略:$,\,` ,即雙引號會解釋字串的特別意思,而單引號直接使用字串.如果使用雙引號將字串賦給變數並反饋它,實際上與直接反饋變數並無差別。如果要查詢包含空格的字串,經常會用到雙引號。

howard@0[script]$ x=*

howard@0[script]$ echo $x

hello.sh menus.sh misc.sh phonebook tshift.sh

howard@0[script]$ echo '$x'

$xhoward@0[script]$ echo "$x"

*這個例子可以看出無引號、單引號和雙引號之間的區別。在最後一種情況中,雙引號告訴shell在引號內照樣進行變數名替換,所以shell把$x替換為*,因為雙引號中不做檔名替換,所以就把*作為要顯示的值傳遞給echo。

對於第一種情況需要進一步說明,shell在給變數賦值時不進行檔名替換(這從第三種情況中也能看出來),各步驟發生的精確次序如下:

shell掃瞄命令列,把x的值設為星號*;

shell再次掃瞄命令列,碰到星號*,把它替換成當前目錄下的檔案清單;

shell啟動執行echo命令,把檔案清單作為引數傳遞給echo.

這個賦值的先後次序非常重要:shell先作變數替換,然後作檔名替換,最後把這行處理為引數

3. 反引號(``)命令替換是指shell能夠將乙個命令的標準輸出插在乙個命令列中任何位置。shell中有兩種方法作命令替換:把shell命令用反引號或者$(...)結構括起來,其中,$(...)格式受到posix標準支援,也利於巢狀。

howard@0[script]$ echo the date and time is `date`

the date and time is 三 6月 15 06:10:35 cst 2005

howard@0[script]$ echo your current working directory is $(pwd)

your current working directory is /home/howard/script.

4. 反斜槓 backslash-escaped( \ )反斜槓一般用作轉義字元,或稱逃脫字元,linux如果echo要讓轉義字元發生作用,就要使用-e選項。

使用反斜槓是第三種使特殊字元發生轉義的方法。反斜槓的功能和單引號一樣,只是反斜槓每次只能使乙個字元發生轉義,而不是使整個字串發生轉義。請看下面的例子:

greeting=hello\ there (在bash和pdksh環境下)

在命令中,反斜槓使外殼忽略空格,從而將hello there作為乙個單詞賦予變數greeting。

當你想要將乙個特殊的字元包含在乙個字串中時,反斜槓就會特別地有用。

Linux SHELL指令碼中的反引號

linux shell指令碼中的反引號 用反引號,將shell命令引起來,可以將命令的輸出值賦給變數 比如這裡,date命令輸出具體的時間 root localhost date mon apr 27 16 07 01 cst 2020那麼我用反引號將命令完整的引起來,賦值給變數today,那我們可...

Linux Shell 中的反引號,單引號,雙引號

反引號位 位於鍵盤的tab鍵的上方 1鍵的左方。注意與單引號 位於enter鍵的左方的區別。在linux中起著命令替換的作用。命令替換是指shell能夠將乙個命令的標準輸出插在乙個命令列中任何位置。如下,shell會執行反引號中的date命令,把結果插入到echo命令顯示的內容中。root loca...

Linux Shell 中的反引號,單引號,雙引號

反引號位 位於鍵盤的tab鍵的上方 1鍵的左方。注意與單引號 位於enter鍵的左方的區別。在linux中起著命令替換的作用。命令替換是指shell能夠將乙個命令的標準輸出插在乙個命令列中任何位置。如下,shell會執行反引號中的date命令,把結果插入到echo命令顯示的內容中。root loca...