そのため、単純なユーザー入力IPを取得してテキストファイルに保存するシェルスクリプトがあります。
MasterNode(){
echo "Enter number of Master Node below"
read -r numESM
for ((i=1; i<=${numESM}; i++))
do
echo "${bold}Enter Master node server IP below${normal}"
read IPS;
echo "${IPS}" >> /path/Master.txt 2>&1
done
}
MasterNode
Master.txtの出力は次のようになります。
1.1.1.1
2.2.2.1
1.1.2.1
このIPをこの形式の他のファイル(設定)ファイルに保存したいと思います。
discovery.seed_hosts: ["1.1.1.1", "2.2.2.1","1.1.2.1"]
cluster.initial_master_nodes: ["1.1.1.1","2.2.2.1"]
ループから得られた各値をいくつかの動的変数に格納する方法はありますか?たとえば、ループが最初に実行されると、値はA [0]に格納され、A [0]の値はA [1と同じ1.1.1.1です。 ]の値は2.2.2.1です。次に、bashの他の変数と同様に、その値を取得します。
ベストアンサー1
これはどうですか:
echo "Enter number of Master Node below"
read -r numESM
IPS=() # make empty array
for ((i=1; i<=${numESM}; i++))
do
echo "Enter Master node server IP below"
read IP;
IPS+=($IP) # add entry to array
done
line="discovery.seed_hosts: ["
for i in "${IPS[@]}"
do
line="${line}\"${i}\"," # add entry to line
done
line="${line%?}" # remove last ","
line="${line}]" # add "]"
echo $line
これを関数に入れる方法を知っていますか?別のアプローチは、アイテムがline
入力されたときにアイテムを追加してfor
ループを削除することです。ただし、これを追加する方法と、for
他のループの行に追加する項目がたくさんあります。これはfor
ループです:
echo "Enter number of Master Node below"
read -r numESM
line="discovery.seed_hosts: ["
for ((i=1; i<=${numESM}; i++))
do
echo "Enter Master node server IP below"
read IP;
line="${line}\"${IP}\","
done
line="${line%?}" # remove last ","
line="${line}]" # add "]"
echo $line
警告:項目がゼロの場合、正しく機能しません。