我有很多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/
这样我就可以轻松地一次更改许多脚本中的代码部分。
这是可能的,还是有更好的方法来做这个而不使用参数和一个脚本?
答案 0 :(得分:1)
使用source
命令。这是bash的'include'版本
答案 1 :(得分:1)
如果脚本是可执行的,则不需要“include”:
~/scripts/common.sh
如果脚本不可执行或没有合适的shebang行,那么您需要指定解释器:
bash ~/scripts/common.sh