1. 程式人生 > >特殊符號作用

特殊符號作用

單引號:保留括起的所有字元的字面值。取消多個字元的特殊含義
雙引號:$、反引號(可替換成$())、反斜槓特殊含義保留下來,而其他特殊符號只保留字面值。取消多個字元的特殊含義
\作為轉義字元,僅取消單個字元的特殊含義。

案例:
[[email protected] ~]# echo '`ls`'
`ls`

[[email protected] ~]# echo "`ls`"
anaconda-ks.cfg
bin
classroom-rhce-post.log
Desktop
DHCP-ranges.txt
Documents
Downloads
examrhce-0.0.1-1.el7.x86_64.rpm
ldap
Music
Pictures
Public
selinux_modules
Templates
Videos


命令中帶有-e和不帶-e的反斜槓引數
[[email protected] ~]# b=n
1、[[email protected] ~]# echo -e "\\$b"

###雙引號內,\\變成了字元\,而$b變成了n。結果字串為\n。而echo又識別轉移字元\n,所以結果輸出是回車。

2、[[email protected] ~]# echo -e "\\u"
\u
###雙引號中的\\轉成了字元\,雙引號輸出結果為\u。由於\u在linux系統裡沒有定義,所以只好輸入\u

3、[[email protected] ~]# echo -e "\\\u"
\u
###雙引號中的\\轉成字元\,雙引號輸出結果為\\u。由於-e引數識別了轉義字元,使得\\u轉成了字元\u,輸入\u

4、[[email protected] ~]# echo -e "\\$u"

###雙引號中的\\識別成\,而$u識別成了n。雙引號輸出\u。由於-e引數識別了轉義字元,使得\n變成了回車並輸出。

5、[[email protected] ~]# echo -e "\\\$u"
\$u
###雙引號中\\識別成字元\,\$識別成$,雙引號中輸入\$u。由於-e引數雖然可以識別\n等引數,由於man檔案中echo識別不了\$,只好輸出\$u。

6、[[email protected] ~]# echo -e "\\n\$u"

$u
###雙引號中\\識別成字元\,\$識別成$,雙引號輸出\n$u。由於-e引數可以識別\n,所以輸出回車+$u。



倒引號:
將倒引號中的內容或$()中的執行結果作為原命令的值。功能等同於$(),推薦使用$()而不是倒引號

案例:
[[email protected] ~]# echo "`ls`" > /root/test.txt
###不符合posix程式設計規範,不推薦使用
[[email protected] ~]# cat /root/test.txt
anaconda-ks.cfg
bin
classroom-rhce-post.log
Desktop
DHCP-ranges.txt
Documents
Downloads
examrhce-0.0.1-1.el7.x86_64.rpm
ldap
Music
Pictures
Public
selinux_modules
Templates
Videos

[[email protected] ~]# echo "$(ls)" > /root/test.txt
###符合posix程式設計規範,強烈推薦使用
[[email protected] ~]# cat /root/test.txt
anaconda-ks.cfg
bin
classroom-rhce-post.log
Desktop
DHCP-ranges.txt
Documents
Downloads
examrhce-0.0.1-1.el7.x86_64.rpm
ldap
Music
Pictures
Public
selinux_modules
Templates
test.txt
Videos
[[email protected] ~]#