Выполнение команды cURL для загрузки содержимого файла (путем заполнения формы), подобного следующему curl -L -X POST -F 'edit=filename' http://website.local/example -F 'filecontent=test;2;3'
, будет работать на High Sierra, но не на Catalina.
Каталина продолжает останавливаться на точке с запятой ;
и игнорирует все остальное, потому что интерпретирует точку с запятой и выводит:
Warning: skip unknown form field: 2
Warning: skip unknown form field: 3
Я пробовал разные вещи, например, экранировать его \;
и заключать его в одинарные кавычки, но все равно безуспешно, также пытался перейти на bash или другие оболочки, кроме zsh.
Следуя примеру, curl -F 'colors="red; green; blue";type=text/x-myapp' example.com
работает, я сейчас просто пытаюсь прочитать содержимое файла. Код, который работает на High Sierra: -F "filecontent=$(<Example.txt)"
Загружаемый файл содержит точки с запятой, а текст загружается до первой точки с запятой.
Curl 7.54.0 в High Sierra
curl 7.64.1 в Каталине
1 ответ
Измените с --form
на --form-string
, чтобы предотвратить анализ ;key=value
(используемый для назначений ;type=text/x-myapp
).
Таким образом, вы можете изменить соответствующую строку:
curl "${other_args[@]}" -F "filecontent=$(<file)"
Чтобы :
curl "${other_args[@]}" --form-string "filecontent=$(<file)"
Похожие вопросы
Новые вопросы
shell
Термин «оболочка» относится к общему классу текстовых интерактивных командных интерпретаторов, чаще всего связанных с операционными системами Unix и Linux. Для вопросов о сценариях оболочки, пожалуйста, используйте более конкретные теги, такие как 'bash', 'powershell' или 'ksh'. Без конкретного тега следует предполагать переносимое (POSIX-совместимое) решение, хотя вместо него предпочтительнее использовать «posix» или «sh».