在shell脚本中包含一大块代码

时间:2011-04-19 09:20:47

标签: bash

我有很多shell脚本,看起来像这样:

#!/bin/bash

cd ~/Dropbox/cms_sites/examplesite/media
sass -C --style compressed --update css:css

cd ~/Dropbox/cms_sites/examplesite

rm -f ./cache/*.html
rm -fr ./media/.sass-cache/
rm -fr ./admin/media/.sass-cache/


rsync -auvzhL . username@host:/home/username/remote_folder

(我知道cd的使用似乎很奇怪,但它们已经进化了!)

现在,所有这些脚本都有一些区别,因为它们有不同的用户名,主机,本地文件夹和远程文件夹名称,我希望没有经验的用户能够在没有参数的情况下运行它们(因此他可以拖放他们进入一个没有问题的终端。)

我想做的是:

#!/bin/bash

cd ~/Dropbox/cms_sites/examplesite/media
sass -C --style compressed --update css:css

cd ~/Dropbox/cms_sites/examplesite

include ~/scripts/common.sh

rsync -auvzhL . username@host:/home/username/remote_folder

然后在common.sh中有一个文件,如下所示:

rm -f ./cache/*.html
rm -fr ./media/.sass-cache/
rm -fr ./admin/media/.sass-cache/

这样我就可以轻松地一次更改许多脚本中的代码部分。

这是可能的,还是有更好的方法来做这个而不使用参数和一个脚本?

2 个答案:

答案 0 :(得分:1)

使用source命令。这是bash的'include'版本

答案 1 :(得分:1)

如果脚本是可执行的,则不需要“include”:

~/scripts/common.sh

如果脚本不可执行或没有合适的shebang行,那么您需要指定解释器:

bash ~/scripts/common.sh