特殊符号作用

时间:2022-11-02 13:30:52

单引号:保留括起的所有字符的字面值。取消多个字符的特殊含义
双引号:$、反引号(可替换成$())、反斜杠特殊含义保留下来,而其他特殊符号只保留字面值。取消多个字符的特殊含义
\作为转义字符,仅取消单个字符的特殊含义。

案例:
[root@classroom ~]# echo '`ls`'
`ls`

[root@classroom ~]# 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的反斜杠参数
[root@classroom ~]# b=n
1、[root@classroom ~]# echo -e "\\$b"

###双引号内,\\变成了字符\,而$b变成了n。结果字符串为\n。而echo又识别转移字符\n,所以结果输出是回车。

2、[root@classroom ~]# echo -e "\\u"
\u
###双引号中的\\转成了字符\,双引号输出结果为\u。由于\u在linux系统里没有定义,所以只好输入\u

3、[root@classroom ~]# echo -e "\\\u"
\u
###双引号中的\\转成字符\,双引号输出结果为\\u。由于-e参数识别了转义字符,使得\\u转成了字符\u,输入\u

4、[root@classroom ~]# echo -e "\\$u"

###双引号中的\\识别成\,而$u识别成了n。双引号输出\u。由于-e参数识别了转义字符,使得\n变成了回车并输出。

5、[root@classroom ~]# echo -e "\\\$u"
\$u
###双引号中\\识别成字符\,\$识别成$,双引号中输入\$u。由于-e参数虽然可以识别\n等参数,由于man文件中echo识别不了\$,只好输出\$u。

6、[root@classroom ~]# echo -e "\\n\$u"

$u
###双引号中\\识别成字符\,\$识别成$,双引号输出\n$u。由于-e参数可以识别\n,所以输出回车+$u。



倒引号:
将倒引号中的内容或$()中的执行结果作为原命令的值。功能等同于$(),推荐使用$()而不是倒引号

案例:
[root@classroom ~]# echo "`ls`" > /root/test.txt
###不符合posix编程规范,不推荐使用
[root@classroom ~]# 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

[root@classroom ~]# echo "$(ls)" > /root/test.txt
###符合posix编程规范,强烈推荐使用
[root@classroom ~]# 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
[root@classroom ~]#