收錄自鳥哥:http://linux.vbird.org/linux_basic/0340bashshell-scripts.php
shell script 是利用 shell 的功能所寫的一個『程式 (program)』,這個程式是使用純文字檔,將一些 shell 的語法與指令寫在裡面, 搭配正規表示法、管線命令與資料流重導向等功能,以達到我們所想要的處理目的。
所以,簡單的說, shell script 就像是早期 DOS 年代的批次檔 (.bat) ,最簡單的功能就是將許多指令彙整寫在一起, 讓使用者很輕易的就能夠 one touch (執行一個檔案 "shell script" ,就能夠一次執行多個指令), 而, shell script 更提供陣列、迴圈、條件與邏輯判斷等重要功能,讓使用者也可以直接以 shell 來撰寫程式,而不必使用類似 C 程式語言等傳統程式撰寫的語法呢!
那,這麼說您可以瞭解了嗎?是的! shell script 可以簡單的被看成是批次檔, 也可以被說成是一個程式語言,且這個程式語言由於都是利用 shell 與相關工具指令, 所以不需要編譯即可執行,且擁有不錯的除錯 (debug) 工具,所以,他可以幫助系統管理員快速的管理好主機。
# 連續指令單一化:
其實,對於新手而言, script 最簡單的功能就是:『彙整一些在 command line 下達的連續指令,將他寫入 scripts 當中,而由直接執行 scripts 來啟動一連串的 command line 指令輸出入!』例如: 防火牆連續規則 ( iptables ),開機載入程序的項目 ( 就是在 /etc/rc.d/rc.local 裡頭的資料 ) ,等等都是相似的功能啦! 其實,說穿了,如果不考慮 program 的部分,那麼 scripts 也可以想成,僅是幫我們把一大串的指令彙整在一個檔案裡面, 而直接執行該檔案就可以執行那一串又臭又長的指令段!就是這麼簡單啦!
假設檔名是 shell.sh 好了,如何執行這個檔案?很簡單,可以有底下幾個方法:
* 將 shell.sh 加上可讀與執行 (rx) 的權限,然後就能夠以 ./shell.sh 來執行了;
* 直接以 sh shell.sh 的方式來直接執行即可。
反正重點就是要讓那個 shell.sh 內的指令可以被執行的意思啦!咦!那我為何需要使用 ./shell.sh 來下達指令? 還記得我們在 bash 裡面一直強調的,指令是否能夠被執行與 PATH 這個環境變數有關, 所以,要執行『目前這個目錄下的某個檔案』就需要加上 ./ 這個目錄啦!另外,其實您也可以將 shell.sh 放在您家目錄下的 ~/bin 這個目錄中,然後利用 PATH="$PATH":~/bin 的設定, 嘿嘿,就能夠直接執行您的 script 囉~ ^_^
那,為何 sh shell.sh 也可以執行呢?這是因為 /bin/sh 其實就是 /bin/bash , 使用 sh shell.sh 亦即告訴系統,我想要直接以 bash 的功能來執行 shell.sh 這個檔案內的相關指令的意思。 而我們也可以利用 sh 的參數,如 -n 及 -x 來檢查與追蹤 shell.sh 的語法是否正確呢! ^_^
留言列表