I've got this service-accounts-list.txt file with service accounts:
serviceAccount:p12345-001@gcp-sa-logging.iam.gserviceaccount.com
serviceAccount:p12345-002@gcp-sa-logging.iam.gserviceaccount.com
serviceAccount:p12345-003@gcp-sa-logging.iam.gserviceaccount.com
serviceAccount:p12345-004@gcp-sa-logging.iam.gserviceaccount.com
serviceAccount:p12345-005@gcp-sa-logging.iam.gserviceaccount.com
and this results.json file which I'd like to append data to:
{
  "access": [
    {
      "role": "WRITER",
      "specialGroup": "projectWriters"
    },
    {
      "role": "OWNER",
      "specialGroup": "projectOwners"
    },
    {
      "role": "READER",
      "specialGroup": "projectReaders"
    }
  ]
}
Expected result: I'd like to add an object for each line in service-accounts-list.txt, like so:
{
  "access": [
    {
      "role": "WRITER",
      "specialGroup": "projectWriters"
    },
    {
      "role": "OWNER",
      "specialGroup": "projectOwners"
    },
    {
      "role": "READER",
      "specialGroup": "projectReaders"
    },
    {
      "role": "WRITER",
      "userByEmail": "serviceAccount:p12345-001@gcp-sa-logging.iam.gserviceaccount.com"
    },
    {
      "role": "WRITER",
      "userByEmail": "serviceAccount:p12345-002@gcp-sa-logging.iam.gserviceaccount.com"
    },
    {
      "role": "WRITER",
      "userByEmail": "serviceAccount:p12345-003@gcp-sa-logging.iam.gserviceaccount.com"
    },
    {
      "role": "WRITER",
      "userByEmail": "serviceAccount:p12345-004@gcp-sa-logging.iam.gserviceaccount.com"
    },
    {
      "role": "WRITER",
      "userByEmail": "serviceAccount:p12345-005@gcp-sa-logging.iam.gserviceaccount.com"
    }
  ]
}
My bash script so far looks like this:
while read p;
do
  cat result.json | jq --arg email "$p" '.access += [{"role": "WRITER", "userByEmail": $email}]' > result.json
done < service-accounts-list.txt
The resulting result.json file is actually empty. If I redirect the output to for example > result2.json it correctly adds the last service account, like so:
{
  "access": [
    {
      "role": "WRITER",
      "specialGroup": "projectWriters"
    },
    {
      "role": "OWNER",
      "specialGroup": "projectOwners"
    },
    {
      "role": "READER",
      "specialGroup": "projectReaders"
    },
    {
      "role": "WRITER",
      "userByEmail": "serviceAccount:p12345-005@gcp-sa-logging.iam.gserviceaccount.com"
    }
  ]
}
so it seems the jq syntax is correct. I've tried adding the --unbuffered flag to no avail.
What am I missing?
 
     
     
    