그래서 간단한 사용자 입력 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
경고: 항목이 0개이면 제대로 작동하지 않습니다.