『壹』 Linux里單引號和雙引號的區別
shell腳本中的單引號和雙引號一樣都是字元串的界定符,而不是字元的界定符。單引號用於保持引號內所有字元的字面值,即使引號內的\和回車也不例外,但是字元串中不能出現單引號。(注意是所有,只是單引號本身不能夠出現在其中)。
雙引號用於保持引號內所有字元的字面值(回車也不例外),但以下情況除外:
$加變數名可以取變數的值
反引號仍表示命令替換
\$表示$的字面值
\`表示`的字面值
\"表示"的字面值
\\表示\的字面值
除以上情況之外,在其它字元前面的\無特殊含義,只表示字面值。
從上就可以看出單引號和雙引號的區別。下面舉幾個例子:
可見,單引號中完全是保持字元串的原型輸出,而雙引號進行了命令替換。
由上可見雖然單引號和雙引號都是字元串的限定符,但還是有所區別。
『貳』 linux中雙引號單引號和不加引號的區別嗎
雙引號里可以識別變數
單引號就是純字元串
# i=111111
# echo "$i"
111111
# echo '$i'
$i
# echo $i bash
111111 bash
但是不加引號,有時候在腳本里需要區分命令和字元串,就必須加引號,養成良好習慣
『叄』 Linux shell 中單引號字元串裡面有單引號字元怎麼辦
Linux shell 中單引號字元串裡面有單引號字元解決:
$echo"mocha。reporter('spec')"|sed"s/'spec'/'json'/"
mocha.reporter('json')
有單引號的情況就用雙引號唄
$echo"mocha.reporter('spec')"|sed$'s/'spec'/'json'/'
mocha.reporter('json')
或者也可以這樣、加個$讓bash轉義
控制字元
轉義字元不屬於控制字元;控制字元也不屬於轉義字元。如果控制字元的定義是非圖形的字元,或者對輸出設備(列印機、文本終端)有特殊意義的字元,那麼針對這些設備的轉義字元也是控制字元。但是程序設計用的轉義字元是圖形字元,因此它們不是控制字元。相反地,大多數ASCII控制字元單獨都具有控制功能,因此它們不是轉義字元。
『肆』 Linux shell中單引號、雙引號及不加引號的區別是什麼
單引號:所見即所得,即將單引號內的內容原樣輸出,或者描述為單引號裡面看到的是什麼就輸出什麼。
雙引號:把雙引號裡面的內容給輸出出來,如果內容中有命令、變數等,會先把,變來那個、命令解析出結果,然後輸出最終內容。
雙引號內的命令或者變數寫法』命令或變數』或$(命令或變數)
無引號:把內容輸出出來,可能不會鍵含有空格的字元串,視為一個整體輸出,如果內容中有命令、變數等,會先把變數、命令解析出來,然後輸出最終內容,如果字元串中帶有空格等特殊字元,則不能完整輸出,需要改加雙引號。一般連續的字元串,數字,路徑等可以用,不過最好用雙引號,替代之。
這些都是Linux的基礎知識,你學Linux基礎的時候就能學到,看黑馬程序員視頻也能學到的。
『伍』 linux變數設置當中,如 myname='$name its me'使用單引號, 變數$name將失去原有變數內容。
在編寫shell腳本網頁鏈接的時候經常會用到引號,有些時候卻老是忘記單引號和雙引號之間的區別,
所以就整理一下供以後腦子不好使了的時候前來復習一下。首先說下他們的共同點: 好像就只有
一個,就是它們都可以用來界定一個字元串,這個沒什麼好解釋的,真正需要記住的是它們區別,
所以經過整理後,它們的區別主要包括:
1)、單引號屬於強引用,它會忽略所有被引起來的字元的特殊處理,被引用起來的字元會被原封不動的使用,唯一需要注意的點是不允許引用自身;
2)、雙引號屬於弱引用,它會對一些被引起來的字元進行特殊處理,主要包括以下情況:
1:$加變數名可以取變數的值 ,比如:
[root@localhost ~]# echo '$PWD'
$PWD
[root@localhost ~]# echo "$PWD"
/root
2:反引號和$()引起來的字元會被當做命令執行後替換原來的字元,比如:
[root@localhost ~]# echo '$(echo hello world)'
$(echo hello world)
[root@localhost ~]# echo "$(echo hello world)"
hello world
[root@localhost ~]# echo '`echo hello world`'
`echo hello world`
[root@localhost ~]# echo "`echo hello world`"
hello world
3:當需要使用字元($ ` " )時必須進行轉義,也就是在前面加 ;
[root@localhost ~]# echo '$ ` " '
$ ` "
[root@localhost ~]# echo "$ ` " \"
$ ` "
『陸』 linux shell腳本可以使用的引號
單引號('')里的特殊字元全部無效
雙引號("")里大多數特殊字元無效,$ 有效
反引號(``)的作用是執行反引號里的命令,再將命令執行的結果替換到反引號的位置
『柒』 linux腳本文件字元串不加引號和加引號有什麼區別
雙引號在bash中稱作partial quoting或者weak quoting,引號中的字元串很多不會被特殊轉換,如:
空格作為詞的分割符
單引號中的詞
字元模式匹配
路徑名擴展
進程替換 (重定向)
對於普通的字元,加不加雙引號,單引號都一樣
你想要看區別,可以嘗試以下的一些例子:
a. touch "test me" 和 touch test me
b. echo "'$PATH'" 和 echo '$PATH'
c. echo "*" 和 echo *
d. ls "~" 和 ls ~
e. ls "> out1" 和 ls > out1
『捌』 描述Linux shell中單引號、雙引號及不加引號的簡單區別
單引號:所見即所得,即將單引號內的內容原樣輸出,或者描述為單引號裡面看到的是什麼就輸出什麼。
雙引號:把雙引號裡面的內容給輸出出來,如果內容中有命令、變數等,會先把,變來那個、命令解析出結果,然後輸出最終內容。
雙引號內的命令或者變數寫法』命令或變數』或$(命令或變數)
無引號:把內容輸出出來,可能不會鍵含有空格的字元串,視為一個整體輸出,如果內容中有命令、變數等,會先把變數、命令解析出來,然後輸出最終內容,如果字元串中帶有空格等特殊字元,則不能完整輸出,需要改加雙引號。一般連續的字元串,數字,路徑等可以用,不過最好用雙引號,替代之。
如果有什麼不懂的話可以去看看《Linux就該這么學》這本書,非常適合新手學習Linux。
『玖』 shell腳本中單引號和雙引號的區別
在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腳本時,單引號(『)就會經常使用到的。
『拾』 linux 命令行下怎麼輸入單引號
Linux命令行中輸入特殊字元,比如回車、$、!、空格、單引號等,需要利用反斜杠(\)轉義特殊字元,就是把反斜杠\加在特殊字元的前面,反斜杠也被稱為轉義字元。