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