shell學習

1.  變量賦值與環境

export   name [=word]  ---------定義或修改變量及其值

export -p--------  打印命令的名稱以及所有被導出的變量名稱與值

readonly   name   [=word]---------定義不可修改的變量及其值

readonly    -p  -----------打印出只讀的所有變量與值  

env   [var =  value]  [ command_name  [ argument........] ] ----------從程序中刪除變量

env  -i -------忽略繼承的環境,僅使用命令行給定的變量與值

unset   name  ------刪除變量

unset  - v   name1    name2 .......---------刪除變量1,變量2。。。。。

unset  -f    function  -----------刪除指定函數

 

2. 替換運算符

 $ {  varName [ : ] -word }    ----如果varName存在[ 且不爲null ] ,則返回其值,否則返回word。一般用在變量未定義時返回默認值

${ varName [ : ]  =word }-------  同上。。。。。。。。,否則設置它的值爲word,並返回其值。

${ varName [ : ]  +word}-------同上。。。。。。。。。,否則返回null。一般用來測試變量的存在。

${ varName [ : ]  ?message}-------同上。。。。。。。。,否則顯示varName:message,並退出當前命令會腳本。省略message會顯示默認信息:parameter null  or  not  set。一般用來捕捉變量未定義導致的錯誤.

 例如:

假設count未定義,則$ { count  : -1 } 返回值爲1 ,$ { count  : =0 } 設置count爲0 ,

假設count已定義,則$ { count  : +2 }  返回2,

 

 3. 模式匹配運算符

${ variable  #  pattern  }-------如果模式匹配於變量值開頭處,則刪除匹配的最短處,並返回剩下的部分。

${ variable  ##  pattern  }-------同上。。。。。。。。。。則刪除匹配的最長處,並返回剩下的部分。

${ variable  %  pattern  }-------如果模式匹配於變量值的結尾處,則刪除匹配的最短處,並返回剩下的部分。

${ variable  % %  pattern  }-------同上。。。。。。。。,則刪除匹配的最長處,並返回剩下的部分。

 

$ { #variable }  --------返回$variable的字符長度

 filename ={ 1 :- /dev/null }    給定參數則使用它,否則使用/dev/null。

  例如:

假設變量path的值爲/home/lucky/long.file.name ,則有

      ${path  #  / * /  }   結果爲lucky/long.file.name 

      ${ path  ##   / * /   }  結果爲long.file.name 

      ${ path  %   .*    }  結果爲/home/lucky/long.file

      ${ path  %%   . *   }   結果爲/home/lucky/long

 

4. 位置參數

$#        提供傳遞到shell腳本或函數的參數總數 

$*, $@       一次表示所有用命令行的參數。可用來把命令行參數傳遞給腳本或函數所執行的程序。

" $* "       將所有命令行參數視爲單個字符串,等同於“  $1  $2.......    ”

"$@"      將所有命令行參數視爲單獨的字符串,等同於“$1 ”     、“ $2  ”  “$3”。。。。。,他會保留內嵌在每個參數裏的任何空白。

shift命令用來“截去”來自列表裏的位置參數,從左開始,執行後$1的初始值永遠消失,取而代之的是$2的舊值,$2的之值變爲$3的舊值,以此類推。$#的值依次減1,也可使用參數值改變每次截去的參數個數。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章