Bash, заменяющий переменную среды в команде

#bash #appveyor

#bash #appveyor

Вопрос:

Я пытаюсь пройти аутентификацию с помощью GitHub, используя пароль, определенный в переменной среды в AppVeyor.

Команда, которую я пытаюсь выполнить, является:

 git remote add origin https://username:$EnvPassword@github.com/username/Empty.git
  

В приведенном выше сценарии я хочу, $EnvPassword чтобы пароль был заменен паролем, определенным в моей переменной среды.

Я думал, что префикса с $ будет достаточно, но это вообще не работает. Кажется, я не могу найти что-либо об этом где-либо еще в Интернете.

Комментарии:

1. Если вы поместите echo перед командой, что это скажет? (Ну, не показывайте нам пароль.)

2. Перво-наперво: работает ли это, если вы явно указываете свой пароль в URL, а не используете расширение параметра?

3. Для сложных команд используйте более строгий синтаксис ${EnvPassword} вместо $EnvPassword

4. это работает, если вы задаете переменную в bash. я подозреваю, что все, что вы установили в appveyor, не является переменной среды bash или к нему нужно обращаться с определенным префиксом или чем-то еще, но я не знаю appveyor.

5. пожалуйста, предоставьте более подробную информацию о том, где и как вы настраиваете переменную среды и скрипт.

Ответ №1:

Попробуйте заменить $EnvPassword более надежной версией ${EnvPassword} . Этот тип замены обычно лучше подходит для сложных команд.

 git remote add origin https://username:${EnvPassword}@github.com/username/Empty.git