資源描述:
《詳解Bash命令行處理》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、詳解Bash命令行處理作者:home_king來(lái)自:LinuxSir.Org整理:北南南北摘要:我看很多兄弟寫(xiě)腳本或命令時(shí)出現(xiàn)錯(cuò)誤的主要原因,是因?yàn)椴涣私鈈ash的命令行處理。我在這里總結(jié)了一下,大家可以參考一下。其中也涉及到雙引號(hào),單引號(hào)以及eval的技巧,我會(huì)一一講述。目錄前言一、bash命令處理的12個(gè)步驟;二、關(guān)于引用三、eval的作用;1、例子1:用eval技巧實(shí)現(xiàn)shell的控制結(jié)構(gòu)for2、例子2:一個(gè)典型錯(cuò)誤的例子3、例子3:設(shè)置系統(tǒng)的ls色彩顯示四、命令優(yōu)先級(jí)表五、鑒于一些學(xué)習(xí)中會(huì)遇到的困惑,我再給出一些有趣
2、的命令1、commandbuiltinenable2、command3、builtin4、enable六、關(guān)于本文七、相關(guān)文檔++++++++++++++++++++++++++++++++++++++++++++++++++++正文++++++++++++++++++++++++++++++++++++++++++++++++++++前言我看很多兄弟寫(xiě)腳本或命令時(shí)出現(xiàn)錯(cuò)誤的主要原因,是因?yàn)椴涣私鈈ash的命令行處理。我在這里總結(jié)了一下,大家可以參考一下。其中也涉及到雙引號(hào),單引號(hào)以及eval的技巧,我會(huì)一一講述。Shell從
3、標(biāo)準(zhǔn)輸入或腳本中讀取的每行稱(chēng)為一個(gè)管道行,它包含一個(gè)或多個(gè)由0個(gè)或多個(gè)管道字符(
4、)分隔的命令。對(duì)每一個(gè)管道行,進(jìn)行12個(gè)步驟的處理。一、bash命令處理的12個(gè)步驟;+-------------+單引號(hào)
5、------------------------->
6、
7、--------------------------
8、
9、----------------------->
10、1.分隔成記號(hào)
11、-------------------
12、
13、
14、
15、------------------->
16、
17、雙引號(hào)
18、
19、
20、
21、
22、+-------------+
23、
24、
25、
26、
27、
28、
29、
30、
31、
32、
33、
34、
35、讀取下一個(gè)命令/
36、
37、
38、
39、
40、+-------------------------------------------+
41、
42、
43、
44、
45、
46、2.
47、
48、
49、
50、
51、------
52、檢驗(yàn)第一個(gè)記號(hào)
53、
54、
55、
56、
57、
58、開(kāi)放的關(guān)鍵字其他關(guān)鍵字
59、
60、
61、
62、
63、
64、非關(guān)鍵字
65、
66、
67、
68、
69、+-------------------------------------------+
70、
71、
72、
73、
74、
75、
76、
77、
78、
79、/
80、
81、
82、
83、+-----------------------------+
84、
85、
86、
87、擴(kuò)展別名
88、3.檢驗(yàn)第一個(gè)記號(hào)
89、
90、
91、
92、
93、------------
94、別名
95、
96、
97、
98、
99、不是別名
100、
101、
102、
103、
104、+-----------------------------+
105、
106、
107、
108、
109、
110、
111、
112、/
113、
114、
115、+--------------+
116、
117、
118、
119、4.大括號(hào)擴(kuò)展
120、
121、
122、
123、+--------------+
124、
125、
126、
127、
128、
129、
130、
131、/
132、
133、
134、+--------------+
135、
136、
137、
138、5.~符號(hào)擴(kuò)展
139、
140、
141、
142、+--------------+
143、
144、
145、
146、
147、
148、
149、
150、/
151、
152、
153、+--------------+雙引號(hào)
154、
155、
156、
157、6.參數(shù)擴(kuò)展
158、<-----------------
159、
160、
161、+--------------+
162、
163、
164、
165、
166、
167、/
168、
169、+-----------------------
170、-------+
171、
172、
173、7.命令替換(嵌套命令行處理)
174、
175、
176、+------------------------------+
177、
178、
179、
180、
181、
182、/
183、
184、+--------------+雙引號(hào)
185、
186、
187、8.算術(shù)擴(kuò)展
188、------------------
189、
190、
191、+--------------+
192、
193、
194、
195、
196、
197、
198、
199、/
200、
201、
202、+--------------+
203、
204、
205、
206、9.單詞分割
207、
208、
209、
210、+--------------+
211、
212、
213、
214、
215、
216、
217、
218、/
219、
220、
221、+--------------+
222、
223、
224、
225、10.路徑名擴(kuò)展
226、
227、
228、
229、+--------------+
230、
231、
232、
233、
234、
235、
236、
237、
238、/
239、
240、
241、+----------------------------------------+
242、
243、
244、
245、11.命令查尋:函數(shù),內(nèi)置命令,可執(zhí)行文件
246、<---
247、-----
248、
249、+----------------------------------------+
250、
251、
252、
253、/
254、將參數(shù)帶入下一個(gè)命令+-------------+
255、----------eval--------------
256、12.運(yùn)行命令
257、+-------------+結(jié)合上面的插圖,這里給出命令行的12個(gè)步驟。1、將命令行分成由固定元字符集分隔的記號(hào);SPACE,TAB,NE
258、WLINE,;,(,),<,>,
259、,&記號(hào)類(lèi)型包括單詞,關(guān)鍵字,I/O重定向符和分號(hào)。2、檢測(cè)每個(gè)命令的第一個(gè)記號(hào),查看是否為不帶引號(hào)或反斜線的關(guān)鍵字。如果是一個(gè)開(kāi)放的關(guān)鍵字,如if和其他控制結(jié)構(gòu)起始字符串,function,{或(,則命令實(shí)際上為一復(fù)合命令。shell在內(nèi)部