3.4 常用的转义字符
为了能够更好地理解用户的表达,Shell解释器还提供了特别丰富的转义字符来处理输入的特殊数据。刘遄老师以近十年的工作和培训为基础,愣是用了两周时间从数十个转义字符中提炼出了4个最常用的转义字符!这件事情也让我深刻反省了很长时间。原本认为图书写的越厚,作者越是大牛,现在发现这种观念完全是错误的,希望读者在读完本书后能体会到刘遄老师的用心付出。
4个最常用的转义字符如下所示。反斜杠(\):使反斜杠后面的一个变量变为单纯的字符串。
单引号(''):转义其中所有的变量为单纯的字符串。
双引号(""):保留其中的变量属性,不进行转义处理。
反引号(``):把其中的命令执行后返回结果。
我们先定义一个名为PRICE的变量并赋值为5,然后输出以双引号括起来的字符串与变量信息:[root@linuxprobe~]#PRICE=5
[root@linuxprobe~]#echo"Price is $PRICE"
Priceis5
接下来,我们希望能够输出“Price is $5”,即价格是5美元的字符串内容,但碰巧美元符号与变量提取符号合并后的$$作用是显示当前程序的进程ID号码,于是命令执行后输出的内容并不是我们所预期的:[root@linuxprobe~]#echo"Price is $$PRICE"
Priceis3767PRICE
要想让第一个“$”乖乖地作为美元符号,那么就需要使用反斜杠(\)来进行转义,将这个命令提取符转义成单纯的文本,去除其特殊功能。[root@linuxprobe~]#echo"Price is \$$PRICE"
Priceis$5
而如果只需要某个命令的输出值时,可以像命令这样,将命令用反引号括起来,达到预期的效果。例如,将反引号与uname -a命令结合,然后使用echo命令来查看本机的Linux版本和内核信息:[root@linuxprobe~]#echo`uname -a`
Linuxlinuxprobe.com3.10.0-123.el7.x86_64#1 SMP Mon May 5 11:16:57 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux