變量在正是一點的程序里是必備項目。shell 的變量會保留字符串值,而大量的運算符可以在 ${var...} 里使用,讓你控制變量的結(jié)果。
shell 提供了許多的特殊變量 (例如 #? 與 $!),用來訪問特殊信息,例如,命令退出狀態(tài)。shell 也有許多預定義的特殊變量,例如 PS1----用來設置主要提示符。位置參數(shù)與 $* 和 $@ 這類的特殊變量,則用來在腳本 (或函數(shù)) 被引用是,讓用戶可以訪問被使用的參數(shù)。env,export 以及 readonly 則用來控制環(huán)境。
$((...)) 的算術(shù)展開提供完整的算術(shù)運算能力,且使用與 C 相同的運算符與優(yōu)先級。
程序的退出狀態(tài)是一個小的整數(shù),可以在程序完成后,攻飲用者使用;shell 腳本使用 exit 命令來做這件事,而 shell 函數(shù)則使用 return 命令。shell 腳本可以取得在特殊變量 $? 內(nèi)執(zhí)行的最后一個命令的退出狀態(tài)。
退出狀態(tài)可以搭配 if,while 與 until 語句來進行流程控制,也可以與!,&&,以及 || 運算符搭配使用。
test 命令及其別名 [...],可測試文件屬性和字符串與數(shù)值,在 if,while 以及 until 語句里,他也相當有用。
for 提供遍歷整組值的的循環(huán)機制,這整組的值可以是字符串,文件名或其他等等。while 與 until 提供比較傳統(tǒng)的循環(huán)方式,加上 break 和 continue 提供額外的循環(huán)控制。case 語句提供一個多重比較功能,類似 C 與 C++ 里面的 switch 語句。
getopts,shift 與 $# 提供處理命令行的工具。
最后 shell 函數(shù)可將相關命令組織到一起,之后再將它視為一個單獨調(diào)用使用。他們有點像 shell 腳本,只不過他將命令存放在內(nèi)存里,這樣更有效率,且他們還能影響引用腳本的變量與狀態(tài)。