我想创建一个shell脚本,将一些配置设置写入Ubuntu上的xml配置文件。但是,这些设置是针对MQ集群的,我需要脚本为正在建立的每个节点循环不同的次数(由输入参数设置)。
我想写的文件是:
<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 :(得分:1)
有一个名为“seq&#39;您可以使用它来帮助迭代,所以尝试类似:
#!/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