read
命令會(huì)讀取行并將數(shù)據(jù)分割為哥哥字段,供賦值給指明的 shell 變量。搭配 -r
選項(xiàng),可控制數(shù)據(jù)要如何被讀取。
I/O 重定向允許你改編程序的來與與目的地,或者將多個(gè)程序一起執(zhí)行與 subShell 或代碼塊里。除了重定向到文件和從文件從定向之外,管道還可以用于將多個(gè)程序連接在一起。嵌入文件則提供了行內(nèi)輸入。
文件描述符的處理是基本操作,特別是文件描述符 1 與 2,會(huì)重復(fù)的用在日常的腳本編寫中。
printf 是一個(gè)深具靈活性,但有點(diǎn)復(fù)雜的命令,用途是產(chǎn)生輸出。大部分的時(shí)候,他可以簡(jiǎn)單的方式使用,但是他的力量很大。
shell 會(huì)執(zhí)行許多的展開 (或替換) 在每個(gè)命令行的文字上:波浪號(hào)展開式 (如果有支持) 與通配符,變量展開,算術(shù)展開以及命令替換。通配符現(xiàn)已包含 POSIX 字符集,用來針對(duì)文件名內(nèi)的字符進(jìn)行獨(dú)立于 locale 的匹配。為了使用上方便,點(diǎn)號(hào)文件并未包含在通配符展開中。命令替換有兩種形式:...
(反引號(hào)) 為原始形式,而 $(...)
為較新,較好寫的形式。
引用會(huì)保護(hù)不同的源代碼原件,免于被 shell 做特殊處理。單個(gè)的字符可能會(huì)以前置反斜杠的方式引用使用。單引號(hào)會(huì)保護(hù)所有括起來的字符;引號(hào)括起來的所有文字都不做處理,切尼不可以將單引號(hào)內(nèi)嵌到以單引號(hào)引用的文字內(nèi)。雙引號(hào)則是組合括起來的項(xiàng)目,從而視為單一的單詞或參數(shù),但是變量,算術(shù)與命令替換仍舊應(yīng)用到內(nèi)容中。
eval
命令的存在是為了取代一般命令行替換與執(zhí)行書訊,讓 shell 腳本可以動(dòng)態(tài)的構(gòu)建命令。這個(gè)功能很好用,但是請(qǐng)小心使用,花點(diǎn)時(shí)間了解 shell 在執(zhí)行輸入行時(shí)的順序絕對(duì)是有好處的。
subSHell 與代碼塊是組化命令的兩種選擇。它們的用一個(gè)不相同,可以根據(jù)需求選用。內(nèi)建命令的存在是因?yàn)樗鼈円淖?shell 內(nèi)部狀態(tài)且必須是內(nèi)建的 (例如 cd),有些則是為了效率,則可以編寫一個(gè)能使內(nèi)建命令生效的 shell 函數(shù)。在所有內(nèi)建命令里,set
命令是最復(fù)雜的。