linux shell單引號、雙引號及無引號區別

 簡要總結:linux

單引號: shell

能夠說是所見即所得:即將單引號內的內容原樣輸出,或者描述爲單引號裏面看到的是什麼就會輸出什麼。 編程

雙引號: 運維

把雙引號內的內容輸出出來;若是內容中有命令、變量等,會先把變量、命令解析出結果,而後在輸出最終內容來。ide

不加引號: 測試

不會將含有空格的字符串視爲一個總體輸出若是內容中有命令、變量等,會先把變量、命令解析出結果,而後在輸出最終內容來,若是字符串中帶有空格等特殊字符,則不能完整的輸出,須要改加雙引號,通常連續的字符串,數字,路徑等能夠用。spa

實例演示: orm

1 blog

[root@oldboy oldboy]# echo '`date`' ip

#→單引號時看到啥就顯示啥

`date`

[root@oldboy oldboy]# echo "`date`"

#→雙引號時若是裏面是變量,會先把變量解析成具體內容在顯示

Sat Oct 29 18:02:59 CST 2011

[root@oldboy oldboy]# echo `date`

#→對於連續的字符串等內容通常不加引號也可,加雙引號通常比較保險,推薦

Sat Oct 29 18:03:08 CST 2011

2

[root@oldboy ~]# oldboy=testchars  #→建立一個變量                         

[root@oldboy ~]# echo $oldboy   #→不加引號,顯示一個變量解析後的內容          

testchars                                                                      

[root@oldboy ~]# echo '$oldboy' #→單引號,顯示一個變量自己                

$oldboy                                                                    

[root@oldboy ~]# echo "$oldboy" #→雙引號,顯示一個變量內容,引號內能夠是變量、字符串等

testchars                                                          

 

過濾字符串測試:

[root@oldboy ~]# cat >grep.log

testchars

oldboy

[root@oldboy ~]# cat grep.log

testchars

oldboy

[root@oldboy ~]# grep "$oldboy" grep.log

testchars

[root@oldboy ~]# grep '$oldboy' grep.log

[root@oldboy ~]# grep $oldboy grep.log

testchars

 

[ett@oldboy ~]$ cat >oldboy.log

\"

[ett@oldboy ~]$ cat oldboy.log

\"

[ett@oldboy ~]$  grep '\"' oldboy.log

\"

提示:有關單引號和雙引號的區別詳細內容請參考《老男孩linux運維實戰培訓-shell編程精講》

拓展:awk調用shell變量問題

[ett@oldboy ~]$ ett=123   

[ett@oldboy ~]$ awk 'BEGIN {print '$ett'}'

123

[ett@oldboy ~]$ awk 'BEGIN {print "$ett"}'

$ett

[ett@oldboy ~]$ ett='abc'

[ett@oldboy ~]$ awk 'BEGIN {print "$ett"}'

$ett

[ett@oldboy ~]$ awk 'BEGIN {print '$ett'}'

[ett@oldboy ~]$ awk 'BEGIN {print "'$ett'"}'

abc

提示:awk調用shell變量在http://oldboy.blog.51cto.com/2561410/760192一文有體現。

相關文章
相關標籤/搜索