curl: передать запрос GET как аргумент

curl: передать запрос GET как аргумент

У Heroku есть замечательная команда, которая позволяет мне использовать curl для загрузки файла, которая отлично работает в UNIX:

curl -o latest.dump `heroku pgbackups:url`

Команда в обратных кавычках возвращает очень длинный URL-адрес, который трудно скопировать/вставить в мою консоль Windows CMD.

Поскольку обратные кавычки, похоже, не работают в Windows, какой эквивалент есть в Windows? Мои исследования CMD привели к глубокому погружению в создание пакетного файла, который, как я считаю, является излишеством для этой небольшой цели. Поиск в Google man-страниц curl не дал ничего, что можно было бы вытащить. Поиск в Google других ресурсов, похоже, указывает на генерацию запроса POST, что, по-моему, не так.

Какая эквивалентная команда в CMD Windows? Спасибо, Сэм

решение1

Это не оригинальное исследование, а заимствовано изБлоги MSDN.Там говорится, что

Не существует очевидного способа прочитать вывод команды в переменную (...). В оболочках в стиле unix это делается с помощью обратных кавычек. (...)В командном процессоре Windows нет прямого обратного цитирования., но вы можете подделать его, злоупотребив командой FOR.

И вот пример с такимдлякоманда, напоминающая unix-команду echo `your_command`:

for /f "delims=" %i in ('your_command') do @echo "%i"
  • /fактивирует следующий синтаксис ( help forподробнее см.):

    FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
    
  • delim=отключает разделение по пробелам

  • @echoвыводит содержимое переменной %i, но сам вызов echo подавляется ( @)

решение2

Как уже сказал @Eugen Rieck, я предлагаю вам использовать правильный терминал. Но что касается вашего вопроса:

  • Theобратные кавычкииспользуются для выполнения чего-либо и использования его результата в строке, ониоцениватькоманда:

    echo `date`
    

    Или

    echo $(date)
    

    Будет напечатано:

    mar jul  1 11:46:42 CDT 2014
    

    Так что в вашем случае это попытка выполнить herokuкоманду с pgbackups:urlпараметром. Вы можете обратиться к этому вопросу:Пакетные файлы — как задать вывод команд в виде переменнойкакКристианпредлагает в комментариях.

  • А чтобы передать параметр запросу, GETвам нужно просто добавить указанные параметры к URL-адресу, например, если вы хотите передать переменную с именем, numberсодержащим номер 10, и переменную с именем text, содержащую "I'm a text", ваш URL-адрес должен выглядеть следующим образом:

    "http://example.com/script.php?number=10&text=I'm+a+text"
    

Связанный контент