展开变量
Linux中单引号被称为强Strong引号,而双引号被称为弱Weak引号。那么强弱的区别在哪里呢?第一个区别就是展开变量的区别了,如下例:
[root@java ~]# word=Wild
[root@java ~]# echo "$word"
Wild
[root@java ~]# echo '$word'
$word
展开命令
弱引号可以展开命令,而强引号是原封不动地展示字符串,如下例:
ubuntu@VM-0-17-ubuntu:~$ echo "`ls /home`"
ubuntu
ubuntu@VM-0-17-ubuntu:~$ echo '`ls /home`'
`ls /home`
当然,$()语法也是可以的,如:
ubuntu@VM-0-17-ubuntu:~$ echo "$(ls /home)"
ubuntu
ubuntu@VM-0-17-ubuntu:~$ echo '$(ls /home)'
$(ls /home)
引号嵌套
那么引号的嵌套呢?我们可以试一试:
ubuntu@VM-0-17-ubuntu:~$ echo "'`ls /home`'"
'ubuntu'
ubuntu@VM-0-17-ubuntu:~$ echo '"`ls /home`"'
"`ls /home`"
可见,在双引号里单引号是不起作用的,而单引号里的双引号也失去了作用。
转义字符
在双引号(也就是弱引号)中,如果要显示$符号,而不是让$符号展开变量,可以使用反斜杠来进行转义。如以下例子:
ubuntu@VM-0-17-ubuntu:~$ echo "这件衣服售价\$100"
这件衣服售价$100
ubuntu@VM-0-17-ubuntu:~$ echo "这件衣服售价$100"
这件衣服售价00
其余的字符比如反引号`或者反斜杠本身也可以转义。