有關單引號、雙引號和不加引號的簡要說明
名稱 | 解釋 |
單引號 | 所見即所得:即將單引號內的所有內容都原樣輸出,或者描述爲單引號裏面看到什麼就會輸出什麼。 |
反引號 | 命令替換,指的是shell能夠將一個命令的標準輸出插在一個命令行中任何位置。 |
雙引號 | 把雙引號內的所有內容都輸出出來;如果內容中有命令(要反引下)、變量、特殊轉義字符等,會先把變量、命令解析出結果,然後再輸出最終內容來。 |
無引號 | 把內容輸出出來,會將含有空格的字符串視爲一個整體輸出,如果內容中有命令、變量等,會先把變量、命令解析出結果,然後再輸出最終內容來,如果字符串中帶有空格等特殊字符,則不能完整地輸出,需要改加雙引號,一般連續的字符串,數字,路徑等可以不加任何引號,不過無引號的情況最好用雙引號替代。 |
提示 | 這裏的結論僅爲經驗型的結論,可能對某些語言不適合,例如:awk內部就有特殊性。 |
舉例:
[root@localhost ~]# x=* [root@localhost ~]# echo $x (顯示當前目錄下所有文件) 公共的 模板 視頻 圖片 文檔 下載 音樂 桌面 注意:文章後面解釋$x爲何會顯示當前目錄下所有文件。 [root@localhost ~]# echo '$x' 單引號,所見即所得 $x [root@localhost ~]# echo "$x" 雙引號會把變量輸出 *
反單引號示例:
[root@localhost ~]#echo "date +%Y%m%d" 雙引號 date +%Y%m%d [root@localhost ~]#echo 'date +%Y%m%d' 單引號 date +%Y%m%d [root@localhost ~]#echo `date +%Y%m%d` 反單引號 20160811
對x=* ;echo $x的解釋
轉載自http://roclinux.cn/?p=1227
shell在給變量賦值時不進行文件名替換。所以當你執行x=*時,只是一個星號賦值給了x變量。真正的替換髮生在echo $x時。
詳細的步驟是這樣的:
當所在的目錄不爲空
1 當執行x=*時,shell掃描命令行,把*賦值給x。 2 當執行echo $x時,shell先將$x替換爲* 3 shell將*替換爲當前目錄下的文件列表 4 shell執行echo命令,將文件列表作爲參數傳遞給它。
步驟就是這樣,不難,只要記住:“變量賦值時不做匹配替換。shell先做變量替換,在做文件名替換,最後處理參數”。
當所在的目錄爲空時
# x=* # echo $x # *
x就等於*。