Я довольно новичок в jq, и я использую этот учебник, чтобы добавить новую Org в сеть Hyperledger fabri c.
В учебнике широко используется jq, особенно при модификации json файлы.
В учебном пособии используется пример имени организации, но я пытаюсь сделать имя организации динамическим c. Все работает хорошо, за исключением случаев, когда я пытаюсь передать переменные в jq.
Вот команды jq и их результаты.
jq версия: 1.5.1
$ export MSPID = Org4MSP $ echo $ MSPID Org4MSP
Попытка передать переменную с помощью env.
Ключевое слово: env.MSPID
$ jq -s '. [0] * {"channel_group": {"groups": {"Application": {"groups": {"env.MSPID":. [1]}}}}} 'config. json org4. json
Фрагмент вывода: вместо печати Org4MSP он печатает буквенную строку env.MSPID
"env.MSPID": {
"groups": {},
"mod_policy": "Admins",
"policies": {
"Admins": {
"mod_policy": "Admins",
"policy": {
"type": 1,
"value": {
"identities": [
{
Попытка передать переменную с помощью опции --arg
Ключевое слово: "$ MSP"
jq --arg MSP "$ MSPID" -s '. [0] * {"channel_group": {"groups": {"Application": {"groups": {"$ MSP":. [1]}}}} 'config. json org4. json
Фрагмент вывода: вместо печати Org4MSP он печатает буквенную строку $ MSP
"$MSP": {
"groups": {},
"mod_policy": "Admins",
"policies": {
"Admins": {
"mod_policy": "Admins",
"policy": {
"type": 1,
"value": {
"identities": [
{
Попытка передать переменную с использованием параметра --arg и без двойных кавычек:
ключевое слово: $ MSP
$ jq --arg MSP "$ MSPID" -s '. [0] * {"channel_group": {"groups": {"Application": {"groups": {$ MSP:. [1]}}}} 'config. json org4. json
jq: error: синтаксическая ошибка, неожиданное ':', ожидание '}' (Unix проблемы с цитированием оболочки?) в строке 1:
. [0] * {"channel_group": {"groups": {"Application": {"groups": {$ MSP:. [1]}}}}}
jq: 1 ошибка компиляции
Попытка передать переменную используя env. и без двойных кавычек:
ключевое слово: env.MSPID
$ jq -s '. [0] * {"channel_group": {"groups": {"Application": {"groups": {env.MSPID:. [1]}}}}} config. json org4. json
jq: error: синтаксическая ошибка, непредвиденное поле, ожидающее '}' (Unix проблемы с цитированием оболочки?) В строке 1:
. [0] * {"channel_group": {"groups": {"Application": {"groups": {env.MSPID:. [1]}}}}}
jq: 1 ошибка компиляции
Я прошу прощения, если это кажется тривиальным вопросом, но я искал в Интернете и в документах и не понимаю, почему ключ JSON не будет преобразован в значение переменной оболочки.
Спасибо