shell一些转义字符的表示的特殊意思
和echo,sed连用时: \n表示新行
\r
表示回车
\t
表示水平的制表符
\v
表示垂直的制表符
\b
表示后退符
\a
表示“警告”(蜂鸣或是闪动)
\0xx
翻译成ASCII码为八进制0xx所表示的字符
例子 5-2. 转义字符
1 #!/bin/bash
2 # escaped.sh: 转义字符
3
4 echo; echo
5
6 echo "\v\v\v\v" # 打印出 \v\v\v\v literally.
7 # 用带着选项-e的'echo'会打印出转义字符串.
8 echo "============="
9 echo "VERTICAL TABS"
10 echo -e "\v\v\v\v" # 打印四个垂直的制表符.
11 echo "=============="
12
13 echo "QUOTATION MARK"
14 echo -e "\042" # 打印出字符" (引号, 它的八进制ASCII码为42).
15 echo "=============="
16
17 # 当使用像$'\X'的结构时,-e选项是多余的.
18 echo; echo "NEWLINE AND BEEP"
19 echo $'\n' # 新行.
20 echo $'\a' # 警告 (蜂鸣).
21
22 echo "==============="
23 echo "QUOTATION MARKS"
24 # 版本2开始Bash已经允许使用$'\nnn'结构了.
25 # 注意在这里,'\nnn'表示一个八进制的值.
26 echo $'\t \042 \t' # Quote (") framed by tabs.
27
28 # 使用$'\xhhh'结构也可以使用十六进制数来转义.
29 echo $'\t \x22 \t'# Quote (") framed by tabs.
30 # 多谢Greg Keraunen指出这个..
31 # 早期的Bash版本允许用'\x022'.(译者注,现在不行了)
32 echo "==============="
33 echo
34
35
36 # 用ASCII码值把字符赋给变量.
37 # ----------------------------------------
38 quote=$'\042' # 引号"被赋给变量quote了.
39 echo "$quote This is a quoted string, $quote and this lies outside the quotes."
40
41 echo
42
43 # 用连串的ASCII码把一串字符赋给变量..
44 triple_underline=$'\137\137\137'# 137是字符'_'的ASCII码.
45 echo "$triple_underline UNDERLINE $triple_underline"
46
47 echo
48
49 ABC=$'\101\102\103\010' # 101, 102, 103分别是A, B, C字符的八进制ASCII码.
50 echo $ABC
51
52 echo; echo
53
54 escape=$'\033' # 033是ESC的ASCII码的八进制值
55 echo "\"escape\" echoes as $escape"
56 # 不可见的输出.
57
58 echo; echo
59
60 exit 0
参考扩展结构$' '的另外一个例子xample 34-1.
\"
表示引号(")的字面意思
1 echo "Hello" # Hello
2 echo "\"Hello\", he said." # "Hello", he said.
\$
表示美元符($)的字面意思(如果在\$跟上变量名将不会引用变量的值)
1 echo "\$variable01"# 输出是$variable01
\\
表示反斜杠(\)的字面意思
1 echo "\\"# 输出是\
2
3 # 然而 . . .
4
5 echo "\" # 在命令行,这句将会打印SP2变量值(译者注:变量SP2是输入未完成提示符),并要求你继续输入..
6 # 在脚本文件里, 这句会出错.
反斜杠的作用要看它是否是自我转义,被引用,或出现在命令替换结构或是在here document里. 1 #简单的转义和引用
2 echo \z #z
3 echo \\z # \z
4 echo '\z' # \z
5 echo '\\z' # \\z
6 echo "\z" # \z
7 echo "\\z" # \z
8
9 #命令替换
10 echo `echo \z` #z
11 echo `echo \\z` #z
12 echo `echo \\\z` # \z
13 echo `echo \\\\z` # \z
14 echo `echo \\\\\\z` # \z
15 echo `echo \\\\\\\z`# \\z
16 echo `echo "\z"` # \z
17 echo `echo "\\z"` # \z
18
19 # Here document
20 cat
页:
[1]