shell中單引號 雙引號 反斜槓簡說

2022-07-22 01:57:10 字數 1605 閱讀 9479

需求:ssh遠端修改檔案,變數從檔案中獲取,插入遠端伺服器的檔案裡

shell指令碼中的單引號和雙引號一樣都是字串的界定符,而不是字元的界定符。單引號用於保持引號內所有字元的字面值,即使引號內的\和回車也不例外,但是字串中不能出現單引號。(注意是所有,只是單引號本身不能夠出現在其中)。

雙引號用於保持引號內所有字元的字面值(回車也不例外),但以下情況除外:

從網上多個貼上發現,我一直在範乙個錯誤,高估了shell的對引號的處理邏輯

對於引號來說,第乙個引號出現,到第二個引號算作一對,並不會聰明的去判斷其實第乙個引號和第四個引號才是一對。

1、單引號

單引號用於保持引號內所有字元的字面值,即使引號內的\和回車也不例外,但是字串中不能出現單引號

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

2、雙引號

在雙引號內,不被忽略的符號:`、$、\

3、反引號

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

反引號和$()的功能是命令替換,將反引號或$()中的字串做為命令來執行,我們在用shell程式設計時經常用的到 將系統命令的執行結果賦給乙個變數

但反引號內不能再引用反引號,而$()中可以引用反引號

date

sat aug 12 11:35:20 cst 2017

4、反斜槓

反斜槓一般用作轉義字元,或稱逃脫字元,linux如果echo要讓轉義字元發生作用,就要使用-e選項,且轉義字元要使用雙引號

echo -e "\n"

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

示例:

1、單引號裡存在單引號\''

'\047''

2、處理檔案中存在單引號

"mmm'sss

" | sed s#\'

#\\\\047#g

mmm\047sss

echo

"mmm'sss

" | sed's/

'"'"/"\\\047

"'/g

'mmm\047sss

echo

"mmm'sss

" | sed

"s/'/\\\\047/g

"mmm\047sss

3、單引號裡可以列印變數嗎?

'"$key"'"

$key

"''$key''

abc4、遠端處理檔案

命令列子:ssh $ip " echo '$key=$value' >> file "或者ssh $ip " sed -i 's/^$key.*/$key=$value/g' >> file "

補充:$value變數包含任意字元,即

討論:ssh裡的sed或者echo使用單引號還是雙引號

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

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

shell中單引號 雙引號 反引號 反斜槓的區別

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

shell中單引號 雙引號 反引號 反斜槓的區別

url shell 可以識別4種不同型別的引字符號 單引號 字元 雙引號字元 反斜槓字元 反引號字元 color red b 1.單引號 b color grep susan phonebook susan goldberg 403 212 4921 susan topple 212 234 234...