需要一个想法来编写bash部署升级脚本

时间:2013-11-11 12:26:34

标签: bash

我想在bash中编写一个脚本,用于部署/修补,几乎只需要最少的用户交互: -

基本上会有以下模块/案例: -

1。)全新安装(部署a.war,b.war,c.war并为各自的战争创建数据库)

修补(可以是各种排列和组合:---)

2。)只更新a.war

3。)只更新b.war

4.)只更新c.war

5.)仅更新a.war的数据库

6。)仅更新b.war的数据库

7.)仅更新c.war的数据库

8。)更新a.war及其db

9。)更新b.war及其db

10.)更新c.war及其db

和其他组合......

基本上我正在考虑使用一个conf文件,我会在其中阅读像

这样的可用文件

构建: - 000000 - >将采取全新安装

100000 - >只更新a.war

010000 - >只更新b.war

001000 - >只更新c.war

100100 - >更新a.war及其数据库

并基于案例。我从conf文件中得到了我可以调用各自的函数。

这种方法的缺点是我必须克服各种组合的案例值。

这是我的方案的唯一方法,还是我可以尝试别的东西?

请建议:---

1 个答案:

答案 0 :(得分:0)

cut命令可以从一行读取特定字符:

E.g。

conf=001000
update_a=$(echo $conf | cut -b1)
update_b=$(echo $conf | cut -b2)
update_c=$(echo $conf | cut -b3)

但是,如果您从conf文件中读取这些内容,您可能希望以shell语法编写该文件,然后只需source

myconfig.txt:

update_a=false
update_b=false
update_c=true

script.sh:

. myconfig.txt

if $update_a; then
   ....
fi
if $update_b; then
   ....
fi
if .....

或者,您可以用简单的单词编写配置,只使用大小写:

myconfig.txt:

update_c update_f do_whatever

script.sh:

config=`read myconfig.txt`

case "$config" in
*update_a* )
  ....
  ;;
*update_b* )
  ....