Скрипт оболочки для git clone не работает с переменной в качестве пароля - PullRequest
0 голосов
/ 25 октября 2019

У меня проблемы со сценарием оболочки для git, этот сценарий будет запрашивать пароль для учетной записи робота, чтобы сделать клон / push следующим образом:

echo 'write the pass'
read pass
git clone https:\\user:$pass@bitbucket... destination

Проблема в том, что он показываетЯ: fatal: Authentication failed for 'https:\\user:$pass@bitbucket...'

Я пытался с https:\\user:${pass}@bitbucket... и тот же результат

Если я пытаюсь напрямую без какой-либо переменной, как git clone https:\\user:password@bitbucket... destination, она отлично работает.

Вы парень? знаете в чем проблема?

1 Ответ

0 голосов
/ 25 октября 2019

У вас есть пара вопросов здесь. Во-первых, вы используете обратную косую черту вместо прямой. Скорее всего, это плохо интерпретируется оболочкой.

Другая проблема - это проблема цитирования: у вас может быть пробел в пароле, и если это так, оболочка интерпретирует его как два аргумента.

Наконец, если используемый вами пароль содержит определенные символы, вам потребуется экранировать их, чтобы пароль работал правильно. Например, некоторые пароли содержат знак равенства, который должен быть закодирован как %3D. Нет хорошего способа сделать это в оболочке, но если у вас установлен Perl (что вы, вероятно, делаете с Git), вы можете изменить это на следующее:

echo 'write the pass'
read pass
pass="$(echo "$pass" | perl -pe 's/([^A-Za-z0-9._~-])/sprintf "%%%02X", ord($1)/ge')"
git clone https://user:$pass@bitbucket.org/...

, так как кодируется в процентахпароль никогда не будет содержать пробел, больше нет необходимости указывать URL.

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