shell讀取並執行命令時,基本上會執行如下操作:
根據引號規則,將輸入分為word和operator。word和operator統稱為token,token之間用metacharacter分隔(space, tab, newline, |, &, ;, (, ), <, >).
alias expansion也在這一步執行。
將tokens(words和operators)解析為簡單命令或復合命令
執行各種shell擴充套件,將擴充套件的tokens分解為檔名、命令和引數列表。
擴充套件:內的表示式擴充套件。
~擴充套件:〜字元的擴充套件
shell引數擴充套件:將變數擴充套件為其值。
命令替換:使用命令的輸出作為引數。
算術擴充套件:在shell擴充套件中使用算術。
程序替換:一種在命令之間進行讀寫的方法。
word拆分:擴充套件結果拆分為單獨的引數。
檔名擴充套件:用於指定檔名匹配模式的簡寫。
刪除引號:從單詞中刪除引號字元。
執行任何必要的重定向,並從引數列表中刪除重定向運算子及其運算元。
執行命令
(可選)等待命令完成並收集其exit status。
shell基礎 shell檔案的執行方式
sh檔案為linux的指令碼檔案 假如有乙個檔案test.sh,指令碼內容如下 bin bash echo step 1 sleeping sleep 200 echo step 2 sleeping sleep 200 1 第一種方式,是在當前的shell執行指令碼本身,也就是說把test.sh當...
shell 執行shell指令碼
bin bash echo hello world 是乙個約定的標記,它告訴系統這個指令碼需要什麼直譯器來執行,即使用哪一種 shell。echo 命令用於向視窗輸出文字。1 作為可執行程式 chmod x test.sh 使指令碼具有執行許可權 test.sh 執行指令碼注意,一定要寫成 test...
shell執行 shell多程序執行
shell在linux中,是使用者和kernel溝通的橋梁,採用c編寫,既是一種命令語言,也是一種解釋型指令碼語言,我們常寫的ls,grep就是基本的shell命令。cat test.txt grep abc abc.txt 將test.txt所有包含abc的行提取到abc.txt中多個處理都這樣來...