Wrapper Script 在 Unix Like 環境十分常見,它不會重新建立一個新的程式,而是會讀取 input 後加入所需的功能,再將 input 直接傳送給現有的指令。以下是 wrapper script 的簡單例子:
1 2 |
#!/bin/sh exec /root/bin/my-script.sh ${1+"$@"} |
以上 Wrapper Script 實際上沒有甚麼用途,它只是將輸入直接傳送給 /root/bin/my-script.sh,所以執行以上 Wrapper 跟執行 /root/bin/my-script.sh 是沒有分別,因為沒有加入任何新功能。如果有用過 QMail 的應該會編輯過 daemontools 的 run script, 這個 run script 就是較複雜的 Wrapper Script 例子。
以下例子會加入一個功能,會在執行 /root/bin/my-script.sh 時,把執行紀錄下來:
1 2 3 4 |
#!/bin/sh echo "`date` ($UID) run wrapper script." >> /home/phpini/log.txt 2>&1 exec /home/phpini/test.sh ${1+"$@"} |
以上 Wrapper Script 會先紀錄執行指令的時間及帳號 UID,儲存到檔案 /home/phpini/log.txt, 然後才將所有輸入導向到 /home/phpini/test.sh 執行。
以上只是很簡單的例子,事實上 Wrapper Script 的用途很廣泛,尤其是一些不可編輯的 binary 檔。