2017-05-04 6 views
0

スクリプトが実行されているホストに応じて、展開ディレクトリを設定するkornスクリプトを書く必要があります他の5つのホストはディレクトリ2にデプロイされます)。私はシェル/ Kornスクリプト - リストのホスト名に応じて変数を設定します

IF [hostname = host1] then $INSTALL_DIR=Dir1 
ELSE IF [hostname = host2] then $INSTALL_DIR=Dir1 

と各ディレクトリの有効なすべてのホストが含まれていると言うDirectory1HostsとDirectory2Hostsのリストを持っていることを好むだろう以下のようなすべてのホストのためであれば条件を避けたかった - 私はこれを行うことができますどのように

スクリプトが実行されているホストがDirectory1HostsまたはDirectory2Hostsにあるかどうかを確認するだけです(10の代わりに2つのIF条件があるため)。

あなたの助けていただきありがとうございます - 効果的にcontains句を行う方法を見つけるのに苦労しています。

答えて

1

caseの文を使用します

case $hostname in 
    host1) INSTALL_DIR=DIR1 ;; 
    host2) INSTALL_DIR=DIR2 ;; 
esac 

またはあなたが離れて設定し、コードを持たせたいときは、configディレクトリを作ることができます

install_dirs=([host1]=DIR1 [host2]=DIR2) 

... 

INSTALL_DIR=${install_dirs[$hostname]} 
+1

は 'case'は'ホスト[0-5])INSTのようなパターンを可能にすることができ... ' – ULick

0

連想配列を使用しますためのホストと一つのファイルをそれぞれのインストールディレクトリ。これらのファイルを使用して

# cat installdirs/Dir1 
host1 
host2 

あなたのコードは

INSTALL_DIR=$(grep -Flx "${hostname}" installdirs/* | cut -d"/" -f2) 
関連する問題