Я пробовал следующее, чтобы отправить разрыв строки с curl, но \n
не интерпретируется curl.
curl -X PUT -d "my message\n" http://localhost:8000/hello
Как я могу отправить разрыв строки с помощью curl?
Я пробовал следующее, чтобы отправить разрыв строки с curl, но \n
не интерпретируется curl.
curl -X PUT -d "my message\n" http://localhost:8000/hello
Как я могу отправить разрыв строки с помощью curl?
Иногда вы хотите предоставить данные для отправки дословно.
Опция --data-binary
делает это.
Ваша оболочка передает \
за которым следует n
а не символ новой строки, чтобы свернуться, а не "my message\n"
. Bash поддерживает другой строковый синтаксис, который поддерживает escape-последовательности, такие как \n
и \t
. Чтобы использовать его, начните строку с $'
и завершите строку с '
:
curl -X PUT -d $'my message\n' http://localhost:8000/hello
Решение для тех, кто не хочет использовать файлы, и не хочет прибегать к магии экранирования оболочки:
curl -X POST --data-binary @- http://url.com <<EOF
line one
line two
EOF
Но это буквальные символы новой строки в полезной нагрузке почтовых данных, а не в полях формы.
Там намного проще!
curl -X PUT -d $'my message\n' http://localhost:8000/hello
Это будет использовать ANSI-C Quoting для вставки символа новой строки.
Нет трубопроводов, нет файлов данных. См. Также Отправка новых строк с помощью cURL.
(я оказался здесь с немного другим вопросом, поэтому я просто отправлю свой ответ, потому что он может помочь будущим исследователям)
Мое решение применяется к людям, которые отправляют данные стиля в форме, т.е. пары ключ/значение в строке запроса. Используйте кодированный разрыв строки, который равен %0A
, точно так же, как закодированное пространство %20
. Вы можете использовать http://meyerweb.com/eric/tools/dencoder/ для преобразования других символов.
Итак, если вы хотите установить ключ message
в значение:
line one
another
вы отправите
curl --data "message=line%20one%0Aanother" http://localhost:8000/hello
Не ответом на ваш вопрос, но я бы обошел его, создав временный файл, содержащий сообщение и разрыв строки, и дайте завитку, чтобы файл работал:
curl -X PUT -d @message.txt http://localhost:8000/hello
Из руководства :
Если вы начинаете данные с буквы @, остальное должно быть именем файла для чтения данных, или - если вы хотите, чтобы завиток читал данные из stdin. Содержимое файла уже должно быть закодировано в URL. Также можно указать несколько файлов. Таким образом, отправка данных из файла с именем foobar будет выполняться с помощью -data @foobar.
Очень простой способ, просто Shift-Enter в консоли для перерыва. Очень читаемый ввод текста тоже.
curl -d "line1
line2" http-echo.com
Server gets this: line1\nline2
Сделайте это, чтобы удалить разрыв строки:
curl -d "line1 \
line2" http-echo.com
Server gets this: line1 line2
Я использовал Sendgrid с этим кодом (скопировано ниже), первоначально найденным здесь https://sendgrid.com/docs/API_Reference/Web_API_v3/index.html
\n\n
работал в Gmail, но \n
был проигнорирован. Я попытался удвоить побег и другие предложения. Я также пробовал \r\n
, и это тоже не работало в Gmail. Примечание. Я не стал тестировать другие почтовые клиенты, возможно, это была проблема, связанная с Gmail.
curl --request POST \
--url https://api.sendgrid.com/v3/mail/send \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{"personalizations": [{"to": [{"email": "[email protected]"}]}],"from": {"email": "[email protected]"},"subject": "Hello, World!","content": [{"type": "text/plain", "value": "Heya!"}]}'
В конце концов я отказался от поиска решения и переключил text/plain
на text/html
и только что использовал теги <br />
.
Кто-то предположил, что Sendgrid преобразует plaintext в HTML, если у вас включен пиксель отслеживания, что имеет смысл. Возможно, новые строки были уничтожены в процессе преобразования plaintext-to-html. Я предполагаю, что клиент хочет пиксель отслеживания, поэтому решил переключиться на HTML.
Была похожая проблема. При загрузке CSV файла с Mac в облачное хранилище были удалены новые строки. После загрузки весь файл выглядел как одна строка. Я попытался добавить разные символы EOL '\n' '\ r' '\ r\n', но безуспешно. Использование '- -d ata-binary' вместо '-d' решило проблему. Кстати, эта проблема возникла только с Mac. "-d" прекрасно работал во время звонка с компьютера CentOS. Это очень похоже на символ новой строки Mac. Но больше не хочется отлаживать.
Большое спасибо за вашу помощь.
curl -X PUT -d @filename.csv https://cloudstorage -H "content-type: text/csv"
В.С.
curl -X PUT --data-binary @filename.csv https://cloudstorage -H "content-type: text/csv"
Если вы хотите получить новую строку после результата, вы можете напечатать ее с помощью эха:
curl -X PUT -d "my message" http://localhost:8000/hello && echo