歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

Shell轉義符基本語法

轉義(\) :
轉義是一種引用單個字符的方法.一個具有特殊含義的字符前邊放上一個轉義符(\)就告訴shell 這個字符失去了特殊的含義. 值得注意的是,在某些特定的命令和工具中,比如echo和sed, 轉義符往往會起到相反的效果, 它反倒有可能引發出這個字符特殊的含義.
[root@ www.linuxidc.com ]# echo hello\!
hello!
[root@ www.linuxidc.com ]# echo -e x\ty
xty
[root@ www.linuxidc.com ]# echo -e "x\ty"
x       y

[root@ www.linuxidc.com ]# echo "why can"\'"t I write"
why can't I write
" 單詞分隔", 在這個上下文中意味著,將一個字符串分隔為一些分離的參數.
單引號操作總體上和"" 很像,但不允許引用變量.因為$ 的特殊含義被關閉了.在'' 中除了', 其他字符都沒有特殊的含義了.所以單引號比雙引號嚴格.因為即使是\, 在''中都被關閉了,所以你想在'' 中顯示'的含義,將得不到預期的效果.

[root@ www.linuxidc.com ]# var="'(]\\{}\$\""
[root@ www.linuxidc.com ]# echo $var
'(]\{}$"
[root@ www.linuxidc.com ]# echo "$var"
'(]\{}$"                                  #並沒有什麼不同
[root@ www.linuxidc.com ]# IFS='\'                #IFS 是linux的一個全局變量。其實就是個空格分隔符(默認),可以自己更改
[root@ www.linuxidc.com ]# echo $var
'(] {}$"
[root@ www.linuxidc.com ]# echo "$var"
'(]\{}$"                                  #\被換成了空格


對於特定的轉義符的特殊的含義
在echo和sed 中所使用的
\n   意味著新的一行
\r   回車
\t   tab 鍵
\v   vertical tab(垂直tab),查前邊的 Ctl-K
\b   backspace, 查前邊的Ctl-H
\a   "alert"(如beep或flash)
\0xx 轉換成8 進制 ASCII 解碼,等價於oxx


Example:

#####Start Script######

#!/bin/bash
echo;echo
echo "\v\v\v\v"                       #逐字的打印\v\v\v\v

echo "============="
echo "VERTICAL TABS"
echo -e "\v\v\v\v"                    #使用-e選項的echo來打印轉義符

echo "============="
echo "QUOTATION MARK"
echo -e "\042"                       #打印" (引號, 8 進制的ASCII  碼就是42)

echo "============="
echo;echo "NEWLINE AND BEEP"
echo $'\n'                           # 新行
echo $'\a'                           # Alert (beep)

echo "============="
echo "QUOTATION MARKS"
echo $'\t\042\t'                     #雙引號(")

echo "============="
echo
quote=$'\042'                        ## \042是",給quote變量賦值
echo "$quote This is a quoted string, $quote and this lies outside the quotes."

triple_underline=$'\137\137\137'     # 137是8進制的ASCII  碼'_'
echo "$triple_underline UNDERLINE $triple_underline"
echo
ABC=$'\101\102\103\010'             #101,102,103是8進制的碼A,B,C.
echo $ABC
echo;echo
escape=$'\033'                      #033是8進制碼for escape
echo "\"escape\" echoes as $escape"
echo;echo
exit 0
###########End Script############


\"   表達引號本身
    echo "Hello"                  # Hello
    echo "\"Hello\", he said."    # "Hello", he said.
 
\$   $ 號本身,跟在\$ 後的變量名,將不能擴展
    echo "\$variable01"  # 結果是$variable01
 
\\   \號本身.
   echo "\\"  # 結果是\
   echo "\"   # 這會出現第 2 個命令提示符,說白了就是提示你命令不全,你再補個"就
   # 如果是在腳本裡,就會給出一個錯誤.

Copyright © Linux教程網 All Rights Reserved