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 档。