0

我想用几乎最少的用户交互在 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 及其数据库

9.) 更新 b.war 及其数据库

10.) 更新 c.war 及其数据库

和其他组合......

基本上我目前正在考虑获取一个conf文件,我将在其中读取一个类似的变量

构建:- 000000 -> 将进行全新安装

100000-->只更新a.war

010000--> 只更新 b.war

001000--> 只更新 c.war

100100--> 更新 a.war 及其 db 。

.

并根据情况。我从 conf 文件中得到我可以调用相应的函数。

这种方法的缺点是我必须为各种组合创建案例值。

这是我的方案的唯一方法还是我可以尝试其他方法?

请建议:---

4

1 回答 1

0

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

例如

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

但是,如果您正在从 conf 文件中读取这些内容,您可能希望使用 shell 语法编写该文件,然后只source使用它:

我的配置文件:

update_a=false
update_b=false
update_c=true

脚本.sh:

. myconfig.txt

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

或者,您可以用简单的文字编写配置并仅使用案例:

我的配置文件:

update_c update_f do_whatever

脚本.sh:

config=`read myconfig.txt`

case "$config" in
*update_a* )
  ....
  ;;
*update_b* )
  ....
于 2013-11-11T12:39:23.873 回答