1. 程式人生 > >shell中單引號、雙引號、反引號、反斜槓的區別

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

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

1. 單引號 ( '' )
# 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碰到第一個單引號時,它忽略掉其後直到右引號的所有特殊字元

2. 雙引號 ( " " )
雙引號作用與單引號類似,區別在於它沒有那麼嚴格。單引號告訴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先作變數替換,然後作檔名替換,最後把這行處理為引數

3. 反引號(``)
命令替換是指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.

4. 反斜槓 backslash-escaped( \ )
反斜槓一般用作轉義字元,或稱逃脫字元,linux如果echo要讓轉義字元發生作用,就要使用-e選項,且轉義字元要使用雙引號
echo -e "\n"
反斜槓的另一種作用,就是當反斜槓用於一行的最後一個字元時,shell把行尾的反斜槓作為續行,這種結構在分幾行輸入長命令時經常使用。

BTW

$()和``的區別
反引號和$()的功能是命令替換,將反引號或$()中的字串做為命令來執行,我們在用shell程式設計時經常用的到 將系統命令的執行結果賦給一個變數
但反引號內不能再引用反引號,而$()中可以引用反引號
[
[email protected]
b]# cat aa 13 45 mimi bibi [[email protected] b]# data=`cat `ls`` 沒反應,我Ctrl+c了 [[email protected] b]# data=$(cat `ls`) [[email protected] b]# echo $data 13 45 mimi bibi

相關推薦

shell引號引號杠簡說

能夠 col 都是 嵌套 修改文件 字符 變量名 令行 文件中 需求:ssh遠程修改文件,變量從文件中獲取,插入遠程服務器的文件裏 shell腳本中的單引號和雙引號一樣都是字符串的界定符,而不是字符的界定符。單引號用於保持引號內所有字符的字面值,即使引號內的\和回車也不

shell引號引號引號區別

可以識別4種不同型別的引字元號: 單引號字元' 雙引號字元" 反斜槓字元\ 反引號字元` 1. 單引號 ( '' ) # grep Susan phonebook Susan Goldberg 403-212-4921 Susan Topple 212-234-23

shell引號引號引號,不用引號的使用區別

 shell定義字串變數時字串可以用單引號,也可以用雙引號,也可以不用引號,如果無特殊情況話,三者效果一樣 1.單引號和雙引號的區別   str=yalong  echo "The str is $str" >>  The str is yalong #雙引號中的

Linux shell引號引號及不加引號的簡單區別

簡要總結: 單引號:   可以說是所見即所得:即將單引號內的內容原樣輸出,或者描述為單引號裡面看見的是什麼就會輸出什麼。 雙引號:   把雙引號內的內容輸出出來;如果內容中有命令,變數等,會先把變數,命令解析出結果,然後在輸出最終內容來。   雙引號內命令或變數

shell的邏輯判斷,if 判斷文件目錄屬性,if判斷的一些特殊用法

case comm 表達 code 表達式 目錄 怎麽 用戶輸入 shel shell中的邏輯判斷 格式1:if 條件 ; then 語句; fi //如果滿足條件,然後執行語句 [root@akuilinux01 shell]# cat if1.sh #!/bin/

shell括號與括號的區別

1.單括號TEST命令要對變數進行單詞分離,當變數值包含空白符時,要用引號將變數括起來;而雙括號的TEST命令不會對變數進行單詞分離。 以下情況分為變數為單個單詞,含有空格的片語。 [[email protected] yansan]# echo $nam

29.分支篇之VPN部署(包括對接鏈路冗餘優化與分析策略路由與NAT的影響)

拓撲 拓撲可以儲存到本地,然後擴大檢視,這樣才能看的更清楚。(拖動到新視窗開啟即可) 路由器配置VPN,實現財務部門互訪,並且AP能夠正常關聯到總部AC。 3.1、建立環回口 [GW]interface lo0 [GW-LoopBack0]ip address 2.

Vivado埠和埠RAM的區別

Note: 以下內容可能會有錯誤的地方,僅供參考,詳細請查閱Xilinx官方產品指南《pg058-blk-mem-gen》 ! BMG即Block Memory Generator,是Xilinx配置BRAM的IP核,可將BRAM配置成如圖所示的5種類型。 RAM分三種,

eclipse讀取json配置檔案,相對路徑不能以打頭。

fileReader = new FileReader("src/json_for_test/netDiagnoseConfigParameter"); BufferedReader bufferedReader = new BufferedReader(fileReader); St

shell 指令碼引號引號引號區別

最近要編個shell指令碼處理資料,需要檢測資料檔案是否存在,檔名中包含日期,所以需要生成最近幾天的日期,以便檢測檔案是否存在,看下面的指令碼中如何使用雙引號、單引號、反引號: OPDATE=`date -d '-1 day' +%Y%m%d`  for i in $(seq 10)  do     

shell引號引號引號

參考:https://blog.csdn.net/iamlaosong/article/details/54728393http://www.runoob.com/linux/linux-shell-variable.html(1)單引號' '括起來的內容,全部被識別為普通字

shell引號引號引號的使用

總結一些簡單的shell小知識,在一位網友的部落格基礎上做了一些修改,感謝一些網友的分享。 一、shell中的反引號(` `)的作用 將反引號(` `)內的字串當作shell命令來執行,返回值是命令的執行的結果,起到的是一個命令的替換作用。 舉例: 輸出日期 二、she

SQL語句有關引號引號和加號的問題

類型 OS clas 條件 分析 student 條件查詢 log div 字符串數據是用單引號包在外面的,而+號只是用來連接這些字符串的. 數據庫裏的字段是整型的時候不要加單引號,是字符串的時候要加,其它類型根據實際情況來,雙引號就是用來拼接字符串的,單引號是sql文的固

linux引號 引號引號區別

單引號、 雙引號反引號的區別1、單引號、雙引號用於用戶把帶有空格的字符串賦值給變量的分界符。  [root@localhost sh]# str="Today is Monday"  [root@localhost sh]# echo $str  Today is Monday  如果沒有

jshtml引號引號及其轉義使用

雙引號 ace bsp less 兼容 後來 問題 工具類 alc 摘自:http://blog.csdn.net/changhong009/article/details/46004343 ' ----單引號 $#39; ---

shell 指令碼 關於字串的那些事~ 引號引號不使用引號等等

一:字串的定義 shell指令碼中字串可以使用雙引號、單引號、不使用引號來定義 比如:在不使用引號的情況下字串中間不可以有空格 #!/bin/bash doublestr="hello you"; singlestr="happy you"; str=sadyou echo $d

SQL語句引號引號引號的區分

單引號 ’ 和雙引號 “ 在標準 SQL 中,字串使用的是單引號。 如果字串本身也包括單引號,則使用兩個單引號(注意,不是雙引號,字串中的雙引號不需要另外轉義)。 MySQL對 SQL 的擴充套件,允許使用單引號和雙引號兩種。 反引號 ` 反引號一般在Esc鍵的下方,和~在一起。它是為了區分MySQ

機房收費系統之收取金額查詢(TPicker控制元件時間段取值SQL語句引號引號區別

        收取金額查詢窗體較組合查詢而言就是小菜一碟,但即便是內容較少也有其精華之處,現在分享一下我的學習過程吧^_^ 一、收取金額查詢窗體的流程圖: 二、問題集 這是什麼錯誤呢,為什麼會出現這個型別的錯誤? 產生此問題的程式碼部分是什麼樣子的呢? 以

linux shell 引號引號引號

#”雙引號字串 echo let us to do * echo "let us to do *" grep as hu one echo  "\n" echo \n grep "as hu" one #'單引號強制引用 BOY="boy" a='$BO

[golang]golang引號引號引號

[golang]golang中的雙引號、單引號、反引號 版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/kturing/article/details/79844437 go語言中不傾向使用單引號表示字串,單引號用於表示Golang的