у меня есть конечный результат сценария оболочки в эхо, и я хочу преобразовать его в объект JSON - PullRequest
0 голосов
/ 14 ноября 2018

я получил конечные результаты длинного сценария оболочки, я хочу преобразовать его в объект json, есть какой-то простой способ, которым я могу передать эхо | к этому

echo "name=$get_name
pass=$get_pass
value=$get_value
key=$get_key
port=$get_port
server_ip=$get_ip" | jq 

Я хочу получить такие результаты, как этот json

     {
      "pass": "$get_pass"
       "value": "$get_value"
       "key": "$get_key"
        "port": "$get_port"
        "server_ip": "$get_ip"
       }

1 Ответ

0 голосов
/ 14 ноября 2018
echo 'name=$get_name
pass=$get_pass
value=$get_value
key=$get_key
port=$get_port
server_ip=$get_ip' | jq -Rs '
  split("\n")
  | map(capture("(?<k>^[^=]*)=(?<v>.*)")  | {(.k): .v} )
  | add'

производит вывод в указанном вами формате:

{
  "name": "$get_name",
  "pass": "$get_pass",
  "value": "$get_value",
  "key": "$get_key",
  "port": "$get_port",
  "server_ip": "$get_ip"
}

Очевидно, что если вы хотите, чтобы $ get_name оценивался во время echo, вы бы использовали двойные кавычки.

...