linux shell命令之 转义字符


转义
& 传递到脚本的参数数量
* 0个或才多个在字符之前的那个普通字符
+ 匹配一个或者多个在其之前的那个普通字符
^ 匹配行首,或者后面字符的非
$ 命令的退出状态,0表示没有错误,非0表示有错误
` 反引号, shell的引用符号
" 双引号, shell的引用符号
| 管道符号或者表示"或"的意义
? 匹配0个或者1个在其之前的那个普通字符
\ 转义符

echo "This is \" The 60th National Day\""
This is " The 60th National Day"


cat weirdvars.sh
#!/bin/bash

variable="()\\{}\$\""
echo $variable
echo "$variable"

IFS='\' #将分隔符改为转义符
echo $variable
echo "$variable"

exit 0

./weirdvars.sh
()\{}$"
()\{}$"
() {}$"
()\{}$"

第三个,将shell域的分隔符改为转义符,echo $variable得到的结果
变化:(){}$, \符号变成空格, 这是因为shell分隔符将$variable解析为
两个域:()和{}$,中间用空格分隔。

第四个,由于双引号具用防止变量分隔的作用,因此输出结果仍为()\{}$"

cat escape.sh
#!/bin/bash
#echo 不加e选项,按照字面含义解释\t等特殊符号

echo "\t\n\a\v"

#echo 加上e选项后,按照转义进行解析

echo -e "\t\t\thello"
echo -e "hello\v\v\fhello" #换行,但光标仍停在原来的位置
echo -e "\a\a\a\a" #发出警报声
echo -e "\042" #ASCII码

执行: ./escape.sh
\t\n\a\v
hello
hello


hello

"
如果使用了$符号,就无须再使用-e选项
daheng@ubuntu:~/test_program$ echo $'\t\thello'
hello

daheng@ubuntu:~/test_program$ echo $'hello\b\101'
hellA

echo的选项有两个:-e和-n
-e选项表示将转义符后的字符解析为特殊字符
-n选项表示转义符后输出文字不换行


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM