I've got two simple files, bash script and json file:
{
"age": "22",
"message": "You are ${age} years old"
}
age=$(jq -r .age file.json)
message=$(jq -r .message file.json)
echo ${message}
When echoing message, as output I've got
You are ${age} years old
not
You are 22 years old
Is there some way in this scenario, to replace ${age} with variable (for bash to know, that there's variable in there, not just plain string)?
I could probably use sed, to manually replace it, but that's not what I'm asking about.
CodePudding user response:
You can use envsubst to replace the string ${stuff} for exported variables.
age="$age" envsubst <<<"${message}"
CodePudding user response:
You can do with a single call to jq :
jq -r '.age as $age|.message|sub("\\${age}";$age)' input.json
