1. #!(shebang) shell腳本文件第一行的前兩個字符。#!後必須是解釋程序的絕對路徑。
2.#註釋標識符。
3.在運行一個shell腳本之前要確保shell腳本文件具有可執行權限,否則會“permission denied”。
例:chmod u+x /.a.sh
4.bash中的參數擴展
字符“$”會引導參數擴展。
基本的參數擴展:
$參數
${參數} 注意:參數名是大小寫敏感的。
間接參數擴展:
${!參數}
大小寫修改
${參數^}
${參數^^}
${參數,}
${參數,,}
${參數~}
${參數~~}
操作符“^”將參數值得第一個字符改爲大寫,操作符“,”將參數值的第一個字符改爲小寫。
當使用雙重模式(^^或,,)時,所有的字符都被轉換。
變量名擴展
${!前綴*}
${!前綴@}
字符串移除:
${參數#模式}//開頭匹配
${參數##模式}//開頭匹配
${參數%模式}//末尾匹配
${參數%%模式}//末尾匹配
操作符“#”和“%”表示將移除匹配指定模式的最短文本,而操作“##”和“%%”表示移除匹配指定模式的最長文本。
字符串搜索與替換:
${參數/模式/字符串}
${參數//模式/字符串}
${參數/模式}
${參數//模式}
操作符“/”表示只替換一個匹配的字符串,而操作符“//”表示替換所有匹配的字符串。,如果沒有指定替換字符串STRING,那麼匹配的內容將被替換爲空字符串,即被刪除。
求字符串長度:
${#參數}
字符串擴展
${參數:OFFSET}
${參數:OFFSET:LENGTH}
使用默認值
${參數:-WORD} 如果參數爲未定義,或爲null時,這種模式會擴展WORD,否則將擴展參數。
${參數-WORD} 只有參數未定義是,纔會使用WORD。
指定默認值:
${參數:=WORD}
${參數=WORD}
這種模式與使用默認值的模式類似,但其區別在於此種模式不僅擴展了WORD,還將WORD賦值給參數,作爲參數的值。
使用替代值:
${參數:+WORD}
${參數+WORD}
如果參數是未定義的,或者其值爲空時,這種模式將不擴展任何內容。
如果參數是定義的,且其值不爲空,這種模式將擴展WORD,而不是擴展參數的值。