используйте 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;
}
Я получил это из этой страницы
Если вы удалите пробел из строки запроса, это сработает:
$ idvar=$(echo $created | jq '.id' )
$ echo $idvar
"idvalue"
$
Я бы рассмотрел возможность использования jp из JMESpath (https://github.com/jmespath/jp), так как он имеет более точно определенный синтаксис языка.
$ echo $created | jp "id"
"idvalue"
$
Ответ, который вы получите от 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