單引號‘’雙引號“”反向單引號``的區別


單引號 ' '

  • 六親不認,單引號中的所有內容都被認為是字符串
[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: 未找到命令


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM