cURL: Как избежать двух знаков доллара внутри Makefile? - PullRequest
1 голос
/ 21 апреля 2019

Я использую cURL, чтобы получить страницу с веб-сайта, который использует обычную аутентификацию. Допустим, командная строка с учетными данными выглядит следующим образом (обратите внимание на два знака доллара в «pa $$ word»):

curl -u "username:pa$$word" https://example.com

Когда я вставляю эту команду в Makefile, я получаю HTTP/1.1 401 Unauthorised.

Проблема заключается в очистке двух знаков доллара в сочетании с Makefile, потому что:

curl -u "username" https://example.com

работает (при условии, что я наберу "pa $$ word" в командной строке).

И это работает в Bash (не внутри Makefile):

   curl -u 'username:pa$$word' https://example.com

Я пробовал разные уловки, чтобы избежать этих знаков доллара. Пока что пробовал (безуспешно):

   curl -u "username:pa\$\$word" https://example.com
   curl -u "username:pa$$$$word" https://example.com
   curl -u "username:{pa$$word}" https://example.com
   curl ---netrc https://example.com # Credentials are in .netrc

Для тех, кто заинтересован в том, чтобы я поместил пароль в виде простого текста в Makefile - этот пароль предназначен для общедоступного тестового сервера, на котором компания раскрыла все учетные данные, необходимые для участия в тестировании, на общедоступной веб-странице.

Я в основном пытаюсь написать сценарий своей процедуры тестирования, используя Makefile, вместо того, чтобы использовать ssh для ввода одних и тех же команд снова и снова.

Ответы [ 2 ]

2 голосов
/ 21 апреля 2019

$$ в файле make заменен на $, попробуйте следующее:

curl -u 'username:pa$$$$word' https://example.com

и см. Макросы раздел в сделать спецификацию .

0 голосов
/ 21 апреля 2019

Внутри двойных кавычек оболочке нужны обратные слэши, чтобы избежать расширения доллара.

Make-файлы требуют удвоения долларов, чтобы получить доллар.

Итак, чтобы использовать доллары внутри двойных кавычек в Makefile, вы должны сделать оба :

rule:
        shell-command ... "pa\$$\$$word" ...
...