shell指令碼中單引號和雙引號的區別

2021-08-10 23:07:09 字數 3368 閱讀 2152

1樓:

在linux作業系統上編寫shell指令碼時候,我們是在變數的前面使用$符號來獲取該變數的值,通常在指令碼中使用」$param」這種帶雙引號的格式,但也有出現使用'$param'這種帶引號的使用的場景,首先大家看一段例子:

複製****如下:

[root@linux

~]#name=tektea

[root@linux

~]#echo

$name

tektea

[root@linux

~]#sayhello=」hello

$name」

[root@linux

~]#echo

$sayhello

hello

tektea

[root@linux

~]#sayhello='hello

$name'

[root@linux

~]#echo

$sayhello

hello

$name

發現了嗎?沒錯!使用了單引號的時候,那

$name將失去原有的變數內容,僅為一般字元的顯示型態而已!這裡必需要特別小心在意!

所以,單引號與雙引號的最大不同在於雙引號仍然可以保有變數的內容,但單引號內僅能是一般字元,而不會有特殊符號,我們也可以這裡理解:'$sayhello'

與「\$sayhello」是相同的。

在shell指令碼開發過程中,針對變數的單引號(『)和雙引號(「)都是有應用場景的,根據我的經驗總結起來就是:

1.獲取變數值的時候就使用雙引號(「),這是基本用法。

2.如果是在指令碼中要編寫一個新的指令碼,同時這個新的指令碼中還需要包含變數,你就可以選擇使用單引號(『)了,特別是生成一個臨時的expect指令碼時,單引號(『)就會經常使用到的。

2樓:竇秀英蒯未

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

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

$加變數名可以取變數的值

反引號仍表示命令替換

\$表示$的字面值

\`表示`的字面值

\"表示"的字面值

\\表示\的字面值

除以上情況之外,在其它字元前面的\無特殊含義,只表示字面值。

從上就可以看出單引號和雙引號的區別。下面舉幾個例子:

可見,單引號中完全是保持字串的原型輸出,而雙引號進行了命令替換。

由上可見雖然單引號和雙引號都是字串的限定符,但還是有所區別。

python單引號和雙引號的區別

3樓:笑喘是病得抽

使用上來說沒什麼區別

有點小技巧倒是可以提一下

如:str = 'my name is "***"!'

str = "my name is '***'!"

這樣各自的賦值包含不同的引號

用單引號和雙引號shell的區別

4樓:wx928388亻韋亻言

數字,路徑等可以用,然後輸出最終內容。

雙引號內的命令或者變數寫法』命令或變數』或$(命令或變數)無引號:把內容輸出出來,可能不會鍵含有空格的字串,視為一個整體輸出,如果內容中有命令、變數等,會先把變數、命令解析出來,然後輸出最終內容,如果字串中帶有空格等特殊字元,則不能完整輸出,需要改加雙引號。一般連續的字串單引號:

所見即所得,即將單引號內的內容原樣輸出,或者描述為單引號裡面看到的是什麼就輸出什麼。

雙引號:把雙引號裡面的內容給輸出出來、命令解析出結果,如果內容中有命令、變數等,會先把,變來那個

shell指令碼變數單引號和雙引號的區別以及

5樓:秋天不回來

a=b c

echo "$a" 結果是b c

echo '$a' 結果是$a

雙引號會保留特殊字元的特殊含義

單引號就是將所有的字元作為普通字元

shell指令碼中 的 單引號和反引號經常混淆,請高手幫我區別它們的功能,謝謝

6樓:小米飛貓

單引號內忽略掉所有特殊字元

反引號能夠將一個命令的標準輸出插在一個命令列中任何位置

7樓:匿名使用者

單引號原樣輸出,你可以記為「單調輸出」,如下原樣輸出 eval echo a 這個字串,很單調吧:

echo 'eval echo a'

反引號執行內容後輸出,可以記為「反譯輸出」,要把引號中的內容反向翻譯一下,如下要執行反綽號中的內容 eval echo a,得到 a,再執行 echo,最終輸出 a:

echo `eval echo a`

8樓:在錦溪古鎮看西甲的墨西哥狼

雙引號和單引號區別還是有區別的,別說差不多(1) 單引號裡的任何字元都會原樣輸出,單引號字串中的變數是無效的(雙引號可以)

(2) 單引號字串中不能出現單引號(對單引號使用轉義符後也不行)(3) 對於上一條,雙引號可以

(4) 對於命名一個字串,單引號雙引號都可以,甚至可以不加引號再舉個例子吧,比方說預定義了一個變數name=zhangsan雙引號,myname="$name is me"

echo myname 這邊輸出的是: zhangsan is me

單引號,myname='$name is me'

echo myname 這邊輸出的是: $name is me一般來說用雙引號,單引號弱爆了

如何在shell指令碼里單引號裡再引用變數

9樓:水瓶曙光

朋友,你兩個單引號就行啦。注意這兩個單引號不是兩個雙引號哦

a=1echo ''$a''

10樓:攻城獅

單引號不能引用變數的,

只能用雙引號

a=1echo "$a"

shell中對於單引號,雙引號和反引號的處理方式

11樓:小米飛貓

單引號:所有轉移符全部關閉,完整的反應括號中的內容

雙引號:部分轉義符關閉,但某些則保留(如:$ )

反引號:反引號內作為一個系統命令並執行

12樓:匿名使用者

單引號:允許一些特殊字元保留期特有的意義

雙引號:遮蔽掉任何字元的特殊含義

反引號:作為shell命令被執行

在javascript中雙引號和單引號有什麼詳細的區別

雙引號 和單引號 都是一樣的,用雙引號開頭就要用雙引號結束,用單引號開頭就要用單引號結束,單引號中可以巢狀雙引號,雙引號中可以巢狀單引號,沒什麼區別,只有在巢狀時,如果外面是雙引號,裡面必須為單引號,如果外面是單引號,裡面必須為雙引號。相互巢狀,看誰在最外面 但是雙引號不能巢狀雙引號,需要轉義,同理...

關於C 中單引號,雙引號的使用

雙引號引起字串,單引號引單個字元 ascii碼 只是少了一句,單引號引多個字元是字元的編碼組成的整數。雙引號引起字串且末尾預設加有 0,即 字串 0 單引號引單個字元。cout c1 是輸出字元c1 此時的c1並不是變數,而是字元 的十進位制 ascii碼。下面是我在你的基礎上改的 include ...

向MySQL資料庫插入單引號或雙引號

mysql值中需要單引號使用 insert into mytable text values i m sail mysql是一個關係型資料庫管理系統,由瑞典mysql ab 公司開發,目前屬於 oracle 旗下產品。mysql 是最流行的關係型資料庫管理系統之一,在 web 應用方面,mysql是...