歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> shell特殊符號集錦

shell特殊符號集錦

日期:2017/2/27 16:04:24   编辑:SHELL編程
shell中常用的特殊符號羅列如下: # ; ;; . , / \ 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# $@ `command`{} [] [[]] () (()) || && {xx,yy,zz,...}~ ~+ ~- & \<...\> + - %= == != # 井號 (comments) 注釋字符 該句不會被執行 ~ 帳戶的 home 目錄 用戶的home目錄如:cd ~ ; 分號 連續指令符號 如:cd ~/backup ; mkdir startup ; cp ~/.* startup/. ;; 連續分號 (Terminator) case語句中擔任終結符 如: case "$fop" in help) echo "Usage: Command -help -version filename" ;; version) echo "version 0.1" ;; esac . 逗號 1 .代表當前目錄 ..代表上層目錄 2 正則表達式中 .代表匹配一個字元 'string' 單引號 括住部分將被視為單一字串 特殊字符失效 "string" 雙引號 括住部分將被視為單一字串 它防止通配符擴展但允許變量擴展 如 heyyou=homeecho "$heyyou" `command` 倒引號 括住部分為命令 命令執行 , 逗點 分割功能 如 t=$((a=5+3,b=7-1,c=15/3))或者echo "a=$a,b=$b,c=$c" / 斜線 1 根目錄或目錄分隔號 2 除號 \ 倒斜線 1 特殊符號的作用消失 2 放在指令的最末端 表示指令連接下一行 | 管道 連結上個指令的標准輸出,做為下個指令的標准輸入。 ! 驚歎號 1 條件判斷 邏輯否 如:!= 2 規則表達式 邏輯否 如:ls a[!0-9] : 冒號 1 內建指令:"什麼事都不干",但返回狀態值 0 : 返回狀態碼0 : > f.$$等同於cat /dev/null > f.$$ : ${HOSTNAME?} ${USER?} ${MAIL?} 檢查這些環境變數是否已設置,沒有設置的將會以標准錯 誤顯示錯誤訊息 2 環境變量分割符 PATH=$PATH:$HOME/fbin:$HOME/fperl:/usr/local/mozilla ? 問號 匹配一個任意的字元 如:# ls a?a1 * 星號 1 在文件名擴展上用來代表任何字元 2 在運算時代表 "乘法" 如 expr 3 \* 4 3 ** 次方運算 如 let "sus=2**3"echo " $ 錢號 1 變量代表符號 2 正則中表示行末另外 如 grep -E ".$" 或sed 's/\.$//g' 或awk '/\.$/' ${} 變量的正規表達式 bash中${}用法: ${parameter:-word} parameter定義非空時,才不替換為word不賦值,否則替換但不賦值 ${parameter:=word} parameter定義非空時,才不替換不賦值;否則替換並賦值 ${parameter:?word} parameter若非真正的值,腳本退出 ${parameter:+word} parameter若非真正的值,不替換不賦值;否則替換不賦值 ${parameter:offset} parameter從第offset位向右子串 ${parameter:offset:length} parameter從第offset位向右length長度的子串 ${#parameter} parameter變量長度 ${parameter#word} 刪除parameter最左端匹配第一個word ${parameter##word} 刪除parameter中從左向右能匹配的最長word ${parameter%word} 刪除parameter最右端匹配第一個word ${parameter%%word} 刪除parameter中從右向左能匹配的最長word ${parameter/pattern/string} 以string替換parameter中最左端的pattern ${parmeter//pattern/string} 以string替換所有parameter中的pattern $[digit] 1 $0指令本身為0, 2 $1其後依此類推 引用第幾位變量但兩位數以上,則必須使用{}括住 如${12} 3 $* 則是代表所有引用變量的符號 $*將所有的引用變量視為一個整體 $@ $@代表所有引用變量 但符號 $@ 則仍舊保留每個引用變量的區段觀念 $? 狀態值 狀態值會回傳給父進程,用來檢查子進程的執行狀態 $$ 當前進程ID () 指令群組 用括號將一串連續指令括起來稱為指令群組 如:(cd ~ ; vcgh=`pwd` ; echo $vcgh),指令群組 有一個特性 會以產生subshell來執行這組指令 (()) 算數運算c=$((a+b))等同於let c=a+b等同於c=`expr $a + $b`等同於c=`echo $a + $b|bc` {} 大括號 1 定義函數 2 字串的組合 如{userA,userB}-{home,bin}結果為userA-home, userA-bin, userB-home, userB -bin [] 中括號 1 在流程控制中表示判斷式 如:if [ "$?" != 0 ] 2 在正則表達式中表示"范圍"或"集合" rm -r 200[1234] [[]] 與[]符號,基本上作用相同但允許在其中直接使用 || 與 && 邏輯等符號 如:[[ $ak > 5 && $ak < 9 ]] && echo "ok" || 邏輯符號 代表 or 邏輯的符號。 && 邏輯符號 代表 and 邏輯的符號。 & 後台工作 表示將該指令列放入後台中工作 如: tar cvfz data.tar.gz data > /dev/null & \<...\> 單字邊界 規則表達式 如: grep -E '\<man\>' file + 加號 (plus) 1 表示 "加法" 如:expr 1 + 2 + 3 2 規則表達式中用來表示"很多個"的前面字元 如: grep '10\+9' fileB109109 前面必須加上 escape 字元。 - 減號 (dash) 1 表示 "減法" 如:expr 10 - 2 2 系統指令 tar xpvf - -符號從標准輸入讀取資料。 3 cd - 回到"上一次"工作目錄。 % 除法 (Modulo) 1 表示 "除法" 如:expr 10 % 2 2 規則表達式中${parameter%word} %表示最短的 word 匹配 ${parameter%%word} %%表示最長的 word匹配 = 等號 變量賦值 == 等號 代表 "等於" != 不等於 代表 "不等於" ^ 代表行的 "開頭"
Copyright © Linux教程網 All Rights Reserved