單引號 ' '
- 六親不認,單引號中的所有內容都被認為是字符串
[21:23:26 root@C8-3-55 ~]#echo 'echo $LANG'
echo $LANG
雙引號 " "
- 雙引號可以識別變量,不能識別命令
[21:37:14 root@C8-3-55 ~]#echo "echo $LANG"
echo zh_CN.utf8
反向單引號 ` `
-
即能識別其中的命令,又能識別其中的變量,但不支持嵌套
-
聰明的孩子總是比較反叛
[21:40:47 root@C8-3-55 ~]#echo `echo $LANG` ## 單引號內echo和$分別被識別成命令和變量
zh_CN.utf8
[21:41:01 root@C8-3-55 ~]#echo `echo `echo $LANG`` ## 嵌套中最內層echo 被識別為命令,但外層echo沒有被識別
echo zh_CN.utf8
[21:41:34 root@C8-3-55 ~]#echo `echo "echo $LANG"` ## 內層嵌套雙引號,外層echo 沒有被識別
echo zh_CN.utf8
[21:41:45 root@C8-3-55 ~]#echo `echo 'echo $LANG'` ## 內層嵌套單引號,外層echo沒有被識別
echo $LANG
[21:41:57 root@C8-3-55 ~]#echo `echo $(echo $LANG)` ## 內層嵌套了$()后,外層echo被識別成命令
zh_CN.utf8
放在反向單引號內的一定是命令,否則會報錯
$()
-
功能類似反向單引號
-
既能識別其中的命令和變量,又支持嵌套
[21:42:12 root@C8-3-55 ~]#echo $(echo 'echo $LANG')
echo $LANG
[21:42:41 root@C8-3-55 ~]#echo $(echo "echo $LANG")
echo zh_CN.utf8
[21:43:06 root@C8-3-55 ~]#echo $(echo `echo $LANG`)
zh_CN.utf8
[21:43:18 root@C8-3-55 ~]#echo $(echo $(echo $LANG))
zh_CN.utf8
不管內層嵌套的是什么,$()外層的echo都會被識別。
放在反向單引號 ` ` 和$()內部的必須是可以執行的命令
- 否則會報錯
[21:43:36 root@C8-3-55 ~]#echo `root`
-bash: root: 未找到命令
[21:54:29 root@C8-3-55 ~]#echo `print root`
-bash: print: 未找到命令
[21:54:36 root@C8-3-55 ~]#echo $(root)
-bash: root: 未找到命令