Есть ли способ не дать команде cURL интерпретировать точку с запятой в macOS Catalina? - PullRequest
0 голосов
/ 16 октября 2019

Выполнение команды cURL для загрузки содержимого файла (путем заполнения формы), как показано ниже curl -L -X POST -F 'edit=filename' http://website.local/example -F 'filecontent=test;2;3' будет работать на High Sierra, но не на Catalina

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 Ответ

1 голос
/ 16 октября 2019

Измените с --form на --form-string, чтобы предотвратить синтаксический анализ ;key=value (как используется для ;type=text/x-myapp назначений).


Таким образом, вы можете изменить соответствующую строку с:

curl "${other_args[@]}" -F "filecontent=$(<file)"

до:

curl "${other_args[@]}" --form-string "filecontent=$(<file)"
...