Неясная опция curl -o,Что именно делает «#»? - PullRequest
0 голосов
/ 25 мая 2019

Я хочу загрузить несколько файлов и использовать переменные в именах файлов с помощью Curl.

например: curl https://curl.haxx.se/docs/{companies,whodocs}.html -o "file_#1.txt"

Я использую curl 7.61.1

Из Curlman-страница У меня есть, что #number в имени файла должно быть заменено некоторой строкой.Поэтому я предполагаю, что должен получить file_companies.txt и file_whodocs.txt, но в моем случае эта команда просто загружает file_#1.txt и печатает второй файл в стандартный вывод (как без -o <filename>).Так что мне интересно, как использовать эту опцию.

Любое объяснение будет оценено.Спасибо.

1 Ответ

2 голосов
/ 25 мая 2019

Расширение Bash * мешает.Вы должны заключить в кавычки { ... }.

$ curl 'https://curl.haxx.se/docs/{companies,whodocs}.html' -o "file_#1.txt"

[1/2]: https://curl.haxx.se/docs/companies.html --> file_companies.txt
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 29316  100 29316    0     0   5097      0  0:00:05  0:00:05 --:--:--  7540

[2/2]: https://curl.haxx.se/docs/whodocs.html --> file_whodocs.txt
100  2528  100  2528    0     0  23849      0 --:--:-- --:--:-- --:--:-- 23849

. {companies,whodocs} расширяется bash на два аргумента:

$ echo curl https://curl.haxx.se/docs/{companies,whodocs}.html -o "file_#1.txt"
curl https://curl.haxx.se/docs/companies.html https://curl.haxx.se/docs/whodocs.html -o file_#1.txt

Это не то, что вы хотите.Вы хотите передать {...} буквально, как есть, скручиваться.Вы должны процитировать это.

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