0

ユーザーの操作をほぼ最小限に抑えて、展開/パッチ適用用に bash で単一のスクリプトを作成したい:-

基本的に、次のモジュール/ケースがあります:-

1.) 新規インストール (a.war、b.war、c.war を展開し、それぞれの war の DB を作成します)

パッチ適用 (さまざまな順列と組み合わせが可能:---)

お気に入り

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 ファイルからこの内容を読み取る場合は、そのファイルをシェル構文で記述してから、次のように記述します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* )
  ....
于 2013-11-11T12:39:23.873 に答える