所以我有这个 shell 脚本,我在其中获取简单的用户输入的 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] 的值为 1.1.1.1 类似 A[ 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
警告:对于 0 个条目,它无法正常工作。