以下のようにコマンドが出力される状況が発生しました。
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
スクリプトは、入力したすべての内容を1行ずつ出力します。
呼び出しの例:thisscript.sh $(command that generates your IP's)