Передайте две переменные двум запросам для одной команды Unix - PullRequest
0 голосов
/ 07 декабря 2018

В Unix shell, git clone <url> запросит у пользователя имя пользователя, затем пароль.

Я определил $username и $password переменные.

как я мог бы подать эти две переменные в команду по порядку.

Я пробовал echo $password | echo $username | git clone <url>, который не работал

Ответы [ 3 ]

0 голосов
/ 07 декабря 2018

Есть несколько способов сделать это.Что вы, вероятно, должны сделать, потому что это более безопасно, так это использовать конфигурацию, в которой скрипт не должен содержать и передавать имя пользователя и пароль.Например, вы можете настроить ssh или использовать помощник по учетным данным.(Детали зависят от вашей среды, поэтому я бы порекомендовал поискать существующие вопросы и ответы: как их настроить.)

Если вы все еще хотите, чтобы скрипт передавал значения, у вас есть два варианта:: Вы можете использовать форму команды git, которая принимает значения в командной строке (см. Ответ сломанной ноги), или вы можете передавать значения в STDIN (это подход, который вы пытаетесь использовать, но он работает не совсем так, как нужно).вы пытаетесь это сделать).

Когда вы используете |, вы отправляете «стандартный вывод» команды слева на «стандартный ввод» команды справа.Поэтому, когда вы объединяете команды, как вы показываете, первый echo отправляет вывод второму echo - который игнорирует его.Это не то, что вам нужно.

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

git clone *url* <<EOF
$username
$password
EOF
0 голосов
/ 07 декабря 2018

Позвольте мне притвориться, что вопрос не связан ни с git, ни с безопасностью, и мой ответ на буквальный вопрос "Как передать две переменные программе" такой:

( echo $username; echo $password ) | git clone 'url'

То есть просто выводдве строки, разделенные новой строкой (echo добавляет новую строку);или сделайте это за один вызов echo:

echo "$username
$password" | git clone 'url'
0 голосов
/ 07 декабря 2018

Вы можете передать переменную следующим образом:

username="xyz"
password="123"
echo  "git clone https://$username:$password@github.com/$username/repository.git"

Вывод:

git clone https://xyz:123@github.com/xyz/repository.git
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...