Linux Shell編程學習筆(2015-7-11)
一:Shell程序運行的三種方法
賦予程序文件可執行權限,直接運行
比如:chmod a+x shell.sh
使用命令解釋器(即shell)解釋執行
比如:bash shell.sh
使用source命令執行
比如:source shell.sh
二:Shell命令的種類
Linux Shell命令主要有三種:內部命令, shell函數, 和外部命令
* 內部命令:內部命令是Shell解釋器本身包含的命令,在文件系統中沒有相應的可執行文件。例如,cd命令和echo命令就是兩個常用的Shell內部命令。命令行在執行內部命令時,不需要創建新的進程,當然也就不需要銷燬進程。
Shell函數:它是以Shell語言來書寫的一系列程序代碼,可以像其它命令一樣被引用。
外部命令:外部命令是獨立於Shell的可執行程序,在文件系統中有相應的可執行文件。比如最常見的外部命令有:ls,find,locate,grep,ifconfig等。命令行在執行外部命令時,會創建一個當前Shell的復執進程來執行它,執行過程存在進程的創建和銷燬。
三:Shell執行命令的順序
交互式的Shell在獲取用戶輸入的命令後,將按以下的固定順序尋找命令的位置:
1. 別名:使用“alias command=…”創建的命令
2. 關鍵字:如:if, for, while等
3. 函數:Shell語言書寫的代碼
4. 內部命令:Shell本身包含的命令,如:cd, echo, source等
5. 外部命令:二進制可執行程序或腳本程序
四:複合命令
Linux Shell中可以使用“{}”和“()”將多條命令括起來,使其在語法上成爲一條命令。
使用“{}”和“()”,他們的作用基本相同,唯一一點區別在於:用“{}”括起來的命令在本shell內執行,不產生新進程;用“()”括起來的命令在一個新的shell內執行,命令行shell會創建一個新的子shell進程。
舉個例子:
biantiao@lazybone1994-ThinkPad-E430:~$ A=1
biantiao@lazybone1994-ThinkPad-E430:~$ ( A=2; echo $A; )
2
biantiao@lazybone1994-ThinkPad-E430:~$ echo $A
1
biantiao@lazybone1994-ThinkPad-E430:~$ { A=2; echo $A; }
2
biantiao@lazybone1994-ThinkPad-E430:~$ echo $A
2
biantiao@lazybone1994-ThinkPad-E430:~$