как добавить переменную чтения значения в файл с двойными кавычками - PullRequest
0 голосов
/ 10 июня 2019

Я хотел бы записать переменную в файл JSON.

Я перепробовал много команд sed, но все еще не могу найти решение

#! bin/bash   

echo "Hello"
echo "lets create an instance"

read -p "please enter the type of instance you need: " instance_type

echo $instance_type | sed -i "s|""InstanceType"": """"|""InstanceType"": 
""${instance_type}""|g" awsspotinstancecreation.json
roxor@ubuntu:~$ bash rough.sh

Hello

lets create an instance

please enter the type of instance you need: t2.small

{
      "ImageId": "ami-074acc26872f26463",

      "KeyName": "Accesskeypair",

      "SecurityGroupIds": ["sg-064caf9c470e4e8e6"],

      **##"InstanceType": "${instance_type}",##**

      "Placement": {
        "AvailabilityZone": "us-east-1a"
      }
}

Ответы [ 2 ]

1 голос
/ 10 июня 2019

У вашего sed есть проблемы с цитированием, а также проблема попытки чтения данных из файла и STDIN одновременно.

Обычно плохая идея использовать линейно-ориентированные инструменты, такие как sed, grep и awk, для анализа или изменения JSON.Лучшим инструментом для этой задачи на основе оболочки является jq.

jq 1,5 +:

read -p "Instance type: " instance
export instance
jq '.InstanceType=env.instance' awsspotinstancecreation.json

jq 1,4 +:

read -p "Instance type: " instance
jq --arg instance "$instance" '.InstanceType=$instance' awsspotinstancecreation.json
0 голосов
/ 10 июня 2019

Вы можете попробовать использовать усы . Именно для этой цели. Вот реализация bash .

Выбрано с их сайта

Hello, {{NAME}}.

I hope your {{TIME_PERIOD}} was fun.

Команда

NAME=Tyler TIME_PERIOD=weekend ./mo demo/fun-trip.mo

выход

Hello, Tyler.

I hope your weekend was fun.

Неважно, текст в формате JSON или просто текст, если разделитель ясен. В большинстве реализаций также есть возможность изменить разделитель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...