转义
& 传递到脚本的参数数量
* 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选项表示转义符后输出文字不换行