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