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,也可使用參數值改變每次截去的參數個數。