2016-12-24 11 views
-1

Ubuntuのxml構成ファイルにいくつかの構成設定を書き込むシェルスクリプトを作成したいとします。ただし、設定はMQクラスタの設定であり、確立するノードごとにさまざまな回数(入力パラメータで設定)をループするスクリプトが必要です。ファイルに書き込むときにループするシェルBashスクリプト

私は、ファイルへの書き込みをしたいXMLは次のとおりです。

<listeners> 
     <tcp-listener> 
      <port>1883</port> 
      <bind-address>10.0.0.4</bind-address> 
     </tcp-listener> 
    </listeners> 
    <mqtt> 
     <max-client-id-length>65535</max-client-id-length> 
     <retry-interval>10</retry-interval> 
     <max-queued-messages>1000</max-queued-messages> 
    </mqtt> 
    <cluster> 
     <enabled>true</enabled> 
     <transport> 
      <tcp> 
       <bind-address>10.0.0.4</bind-address> 
       <bind-port>7800</bind-port> 
      </tcp> 
     </transport> 
     <discovery> 
      <static> 
       <node> 
        <host>10.0.0.5</host> 
        <port>7800</port> 
       </node> 
       <node> 
        <host>10.0.0.6</host> 
        <port>7800</port> 
       </node> 
       <node> n times </node> 
      </static> 
     </discovery> 
     <failure-detection> 
      <heartbeat> 
       <enabled>true</enabled> 
       <interval>5000</interval> 
       <timeout>15000</timeout> 
      </heartbeat> 
     </failure-detection> 
    </cluster> 

だから基本的には、<node>オブジェクトの数は、スクリプトがでとる変数を反映する必要が

しかし、私はないですファイルへの書き込みに基づいてループする方法を確認してください。私はteeコマンドを使用して探していたが、これは私をループさせません。

tee /opt/hivemq/conf/config.xml > /dev/null <<'EOF' 
    <the xml goes here> 
exit 0 
EOF 

がループする方法はあります:私はノードオブジェクトにファイルを書き込むことができると思い、次にここで

に基づいて書き込みをしているをループは、これまでのところだけで静的なテキストを書き込む私が持っているものです書き込み中?または、ループされたオブジェクトに書き込む必要がありますか?書き込みを停止し、ループカウンタに基づいて複数の書き込みを行い、最後に最後のビットを書き込みます。

ご協力いただければ幸いです。

+0

をそして、あなたの質問はありますか? –

+0

私はまだ混乱しています。ループするスクリプトは何ですか?出力で何が繰り返されるはずですか?私の言う限りでは、XMLサンプルは繰り返しパターンではありません。また、3番目の(?)の段落で文章を終えるのを忘れてしまったようです。 –

答えて

0

ありますが、反復処理を支援するために使用することができます「配列」というコマンドがありますので、何かしてみてください:

#!/bin/bash 

end=$1 

(
    echo start 

    for num in $(seq 1 $end) 
    do 
     node="10.0.0.$num" 
     echo $node 
    done 

    echo end 
) > out.xml 
+1

これは本当に質問に答えますか? btw、 'seq'は役に立たず非標準です。なぜサブシェルですか? –

関連する問題