Цель
Переменная конвейера из файла Bash в команду JQ в другом файле Bash
Контекст
У меня есть файл JSON с двумя пустыми значениями, которые я хочу заполнить:
- HTML-файл
- Переменная в файле Bash (file-b.sh)
HTML часть работает. Я не могу понять переменную часть. Я показываю часть HTML, чтобы продемонстрировать логику, которой я пытаюсь следовать.
file-a.sh
#!/bin/bash
#This line (for the HTML portion) works:
jq --arg text "$(<file.html)" '.content.text=($text | @html)' my-json.json > file.json
# This line (for the Bash variable) doesn't...see end of question for result:
jq --arg variable "$subject" '.subject=$variable' file.json > file-1.json
file-b.sh
#!/bin/bash
subject="abc"
export subject
./file-a.sh
file-1.json: результат
В результате заполняется content.text
, а subject
печатается буквально как переменная, которую я пытался закодировать.
{
"content": {
"text": "Is populated; works great"
},
"subject": "$subject",
}
Основываясь на том, что я прочитал, я перепробовал много итераций одинарных, двойных, круглых скобок (например, {"$subject"}
или ".subject=$variable"
), echo
в трубе, но по-прежнему терпел неудачу. Спасибо за любые идеи.