我想将变量写入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"
}
}
答案 0 :(得分:1)
您的sed
存在引用问题以及尝试同时从文件和STDIN读取数据的问题。
使用sed
,grep
和awk
等面向行的工具来解析或修改JSON通常是一个坏主意。最好的基于shell的工具是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
答案 1 :(得分:-1)