在各种编程语言中,一般都存在使用特殊字符组合来表达特殊的含义。其中大部分都适用“\”作为转换字符含义的操作符。
Shell中也使用“\”,我们称其为转义。
在echo和sed使用的一些转义组合如下:
\n 换行
\r 回车
\t tab制表符
\v 垂直tab
\xxx 八进制ASCII解码,x代表数字
\xyy 十六进制,y代表数字
一个八进制例子如下:
echo '\t \x42 \t'
echo '\x42'
常见的转义组合:
\" 双引号
\$ $符号
\\ \符号
下面是一个转义的例子:
本例中,第一种情况(不带引号)转义符号两行命令均有效;第一行转义后与不加转义符号效果一样。第二种情况(单引号)转义符号在两行均未作转义符号使用,直接输出了。第三种情况(双引号)第一行未作转义符号使用,直接输出;第二行转义起作用,输出一个“\”。
下一个例子比较有趣:
本例使用了反引号“`”,第一行和第二行最终结果一致,其中第二行第一次echo执行后输出“\z”在第二次echo输出时为“z”。
第三行到第六行最终结果一致,第三行和第四行第一次echo前先进行转义,结果都是“\\z”,其中第三行转义1次,第四行转义2次。
第五行和第六行第一次echo前先进行转义,结果都是“\\\z”,其中第五行转义2次,第六行转义3次。
转义符号如果复制给一个变量,在输出变量值时,按如下形式回报错:
v=\
echo "$v"
转义字符还有一个续行效果,在命令行尾部,如果加上“\”,那么下一行的命令跟本行一起输出执行。例如:
ls -l | \
grep "mysql"