У меня есть файл свойств и файл json. Файл свойств содержит пары ключ-значение, которые необходимо заменить в json.
Когда значение не имеет пробелов, оно работает как положено, но когда значение имеет пробелы, значение не заменяется.
Скрипт, заменяющий значения
#!bin/bash
echo hello
while read line;
do
#echo $line
key=$(echo "$line" |cut -d':' -f1)
#echo $part1
value=$(echo "$line" |cut -d':' -f2)
if [[ ! -z $value ]];
then
key="\"$key\""
value="\"$value\""
echo $key : $value
jq '.parameters |= map( if .name == '$key' then .default = '$value' else . end )' cam.json > cam1.json
mv cam1.json cam.json
fi
done < prop.properties
файл свойств
git_con_type:something
git_host_fqdn:something again
git_user:something again again
git_user_password:something
git_repo:something
git_repo_user:
git_branch:
Файл JSON
{
"name": "${p:Instance_Name}",
"parameters": [
{
"name": "git_con_type",
"default": "",
"immutable_after_create": false
},
{
"name": "git_host_fqdn",
"default": "hello",
"immutable_after_create": false
},
{
"name": "git_user",
"default": "",
"immutable_after_create": false
},
{
"name": "git_user_password",
"default": "Passw0rd",
"immutable_after_create": false
},
{
"name": "git_repo",
"default": "lm",
"immutable_after_create": false
},
{
"name": "git_repo_user",
"default": "-Life",
"immutable_after_create": false
},
{
"name": "git_branch",
"default": "master",
"immutable_after_create": false
},
{
"name": "git_clone_dir",
"default": "/opt/git",
"immutable_after_create": false
}
]
}
Error
jq: error: синтаксическая ошибка, неожиданный конец $, ожидание QQSTRING_TEXT или QQSTRING_INTERP_START или QQSTRING_END (проблемы цитирования оболочки Unix?) В строке 1:
.parameters | = map (если .name == "git_host_fqdn", то .default = "что-то
jq: error: возможно, неопределенный оператор if в строке 1:
.parameters | = map (если .name == "git_host_fqdn", то .default = "что-то
JQ: 2 ошибки компиляции
как я могу заставить jq принимать значения с пробелом? Я пробовал jqplay с пробелами, и он работает там, но не на сценарии.