2011-04-19 87 views
0

我有一些shell脚本的所有像这样一大块:包括代码在一个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 . [email protected]:/home/username/remote_folder 

(我知道用光盘似乎不可思议,但它们已经进化!)

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

我希望做的是一样的东西:

#!/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 . [email protected]:/home/username/remote_folder 

然后在common.sh,看起来像一个文件:

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

这样我就可以轻易改变的部分一次编写大量脚本。

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

回答

1

使用source命令。这是bash的版本“包括”

+0

它也有影响,应该引起一个犹豫之前,建议它。 – 2011-04-19 09:23:48

+0

确实。但他明确要求“包含”。 – pepoluan 2011-04-19 09:25:50

+0

当然,来源可能是要走的路。如上所示,我希望该文件在当前脚本的上下文中运行,我认为该脚本会执行该脚本。我会试试看。 Ignacio有什么含义? – 2011-04-19 09:47:26

1

无需“包括”如果脚本是可执行的:

~/scripts/common.sh 

如果脚本没有执行或没有合适的家当线,那么你就需要指定口译员:

bash ~/scripts/common.sh