轉義
& 傳遞到腳本的參數數量
* 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選項表示轉義符后輸出文字不換行
