아래와 같이 명령이 출력되는 상황이 발생했습니다.
192.168.1.84
192.168.1.85
이것을 사용하고 다른 파일을 변경하고 싶습니다. 즉, 이 양식과 같이 이 IP 주소를 차례로 추가하고 싶습니다. 다음과 같은리소스 레코드 세트철사.
ubuntu@kops:/mujahid$ cat change-resource-record-sets.json
{
"Comment": "Update record to reflect new IP address of home router",
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "testing.mak.online.",
"Type": "A",
"TTL": 60,
"ResourceRecords": [
{
"Value": "192.168.1.84"
},
{
"Value": "192.168.1.5"
}
]
}
}
]
}
답변1
생성된 IP 주소 목록에서 올바른 JSON을 생성하려면 somecommand
다음을 사용하세요.jq
:
somecommand | jq -Rs '{
Comment: "Update record to reflect new IP address of home router",
Changes: [ {
Action: "UPSERT",
ResourceRecordSet: {
Name: "testing.mak.online.",
Type: "A",
TTL: 60,
ResourceRecords: split("\n")|.[0:-1]|map({Value:.})
} } ] }'
이로 인해
{
"Comment": "Update record to reflect new IP address of home router",
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "testing.mak.online.",
"Type": "A",
"TTL": 60,
"ResourceRecords": [
{
"Value": "192.168.1.84"
},
{
"Value": "192.168.1.85"
}
]
}
}
]
}
somecommand
출력이 주어지면
192.168.1.84
192.168.1.85
답변2
입력을 배열에 저장하고 루프를 통해 모든 것을 출력할 수 있습니다.
#!/bin/bash
OLDIFS=$IFS
IFS=' '
ARR=($@)
for i in "${ARR[@]}"
do
echo $i >>/output/file.txt
done
IFS=$OLDIFS
스크립트는 입력한 모든 내용을 한 줄씩 출력합니다.
호출 예시:thisscript.sh $(command that generates your IP's)