curl jq получает значение из имени поля

используйте linux libwnck, это можно сделать

#define WNCK_I_KNOW_THIS_IS_UNSTABLE = 1

#include 

int main(int argc,
         char **argv) {
    WnckScreen *screen;

    gdk_init(&argc, &argv);

    screen = wnck_screen_get_default();

    wnck_screen_force_update(screen);

    auto win = wnck_window_get(127926341); // 127926341 is window id, it can be get by linux cli xdotool or wmctrl or other many clis
    GdkPixbuf *r = wnck_window_get_icon(win);
    GError *err = NULL;
    gdk_pixbuf_save(r, "/tmp/prpr.png", "png", &err, "quality", "100", NULL);
    return 0;
}

Я получил это из этой страницы

1
23.07.2020, 09:27
2 ответа

Если вы удалите пробел из строки запроса, это сработает:

$ idvar=$(echo $created | jq '.id' )
$ echo $idvar
"idvalue"
$

Я бы рассмотрел возможность использования jp из JMESpath (https://github.com/jmespath/jp), так как он имеет более точно определенный синтаксис языка.

$ echo $created | jp "id"
"idvalue"
$
-1
18.03.2021, 23:17

Ответ, который вы получите от curl, будет содержать заголовки HTTP, поскольку вы запрашиваете их с помощью-i(--include). Это означает, что содержимое вашей переменной createdбудет содержать заголовки HTTP, а затем некоторый JSON.

Инструмент jqне может анализировать заголовки HTTP, поэтому жалуется. Стандартный заголовок ответа HTTP начинается с чего-то вроде HTTP/1.1 200 OK. Расположение «строка 1, столбец 9» оказывается там, где эта строка имеет свой первый символ пробела, и именно здесь синтаксический анализатор JSON сдается и сообщает об ошибке.

Удаление параметра -iиз вызова curlдолжно заставить ваш код работать, хотя, если вам просто нужно значение ключа id, нет необходимости сохранять вывод curlв промежуточная переменная:

curl -X POST \
    --header 'Content-Type:application/json' \
    --data "$json_document" 'https://myurl/resource' |
jq.id
0
07.05.2021, 08:31

Теги

Похожие вопросы