例如,
git clone 'url'
会提示用户依次输入用户名和密码。
在shell脚本中,
我有$username
和$password
变量。
如何将这两个变量传递给命令。
我应该做类似的事情吗
echo $password | echo $username | git clone 'url'
但这不起作用
答案 0 :(得分:2)
有几种方法可以执行此操作。您可能应该应该做的,因为它更安全,所以使用的配置中脚本不必包含并传递用户名和密码。例如,您可以设置ssh,也可以使用凭据帮助器。 (详细信息取决于您的环境,因此我建议您搜索现有的问题和答案,例如:如何设置这些问题和答案。)
如果您仍然希望脚本传递值,则基本上有两种选择:您可以使用git命令的形式在命令行上获取值(请参见brokenfoot的答案),或者可以传递值在STDIN上(这是您正在尝试的方法,但并不完全按照您尝试的方式工作)。
使用|
时,会将左侧命令的“标准输出”发送到右侧命令的“标准输入”。因此,当您像显示的那样链接命令时,第一个echo
会将输出发送到第二个echo
-忽略它。那不是你想要的。
您将需要一个命令来输出用户名,行尾字符,密码和另一个行尾字符。这与回声(至少,不是可移植的)不容易做到。你可以做类似的事情
git clone *url* <<EOF
$username
$password
EOF
答案 1 :(得分:1)
让我假装这个问题既不与git相关,也不与安全相关 我对字面问题“如何将两个变量传递给 程序”是:
( echo $username; echo $password ) | git clone 'url'
也就是说,仅输出两个由换行符分隔的字符串(echo
添加换行符);或合而为一
致电echo
:
echo "$username
$password" | git clone 'url'
答案 2 :(得分:0)
您可以像这样传递变量:
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