Как собрать вместе строку cmd и данные файла в curl? - PullRequest
0 голосов
/ 18 октября 2011

У меня есть тонны данных JSON, готовых к публикации в БД через CURL. Но БД требует, чтобы начало и конец JSON форматировались определенным образом. Чтобы не настраивать огромный набор данных файлов, переходя к каждому из них, добавляя и добавляя строки ... Я хотел бы просто указать дополнительный начальный и конечный текст в командной строке вокруг файла. Я не считаю редактирование файлов с помощью скрипта кошерным решением, поэтому неправильно связываться с таким нетронутым потоком данных напрямую.

Вместо этого я нашел следующий мэшап как достойный способ сделать это:

curl -d "prepend_string`cat filename.json`append_string" \
-X POST http://localhost:5984/database/_bulk_docs \
-H "Content-Type: application/json"

Но это имеет свои ограничения, потому что в приведенном выше сценарии все данные переносятся в командную строку из файла, а затем публикуются. Поскольку реальные файлы довольно велики, любой может столкнуться с ошибками вроде:

-bash: /opt/local/bin/curl: Argument list too long

Так, для CURL, возможно ли каким-то образом объединить строку cmd и данные файла так, чтобы они были успешно опубликованы (по curl), как в трех отдельных частях?

#(this is make believe syntax)
-d "prepend_string" + @filename.json + "append_string"

1 Ответ

3 голосов
/ 18 октября 2011

Используйте -d @filename для чтения из одного файла:

curl www.example.com -d @mypostdata.txt

Или используйте стандартный ввод:

echo "Beginning"$(cat mypostdata.txt)"End" | curl www.example.com -d -

Или используйте именованную трубу ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...