Linux 按顺序传递两个变量
在Linux 按顺序传递两个变量,linux,bash,git,shell,Linux,Bash,Git,Shell,在unixshell中,git clone将提示用户输入用户名,然后输入密码 我定义了$username和$password变量 如何将两个变量按顺序传递给命令 我试过了 echo$password | echo$username | git clone ,它不起作用您可以这样传递变量: username="xyz" password="123" echo "git clone https://$username:$password@github.com/$username/repositor
unixshell
中,git clone
将提示用户输入用户名,然后输入密码
我定义了$username
和$password
变量
如何将两个变量按顺序传递给命令
我试过了
echo$password | echo$username | git clone
,它不起作用您可以这样传递变量:
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
有几种方法可以做到这一点。您可能应该做的是,因为它更安全,使用一种配置,脚本不必包含和传递用户名和密码。例如,您可以设置ssh,也可以使用凭证助手。(详细信息取决于您的环境,因此我建议搜索现有问题和答案:如何设置这些问题和答案。) 如果您仍然想让脚本传递值,那么基本上有两种选择:可以使用一种形式的git命令在命令行上获取值(请参阅brokenfoot的答案),或者可以在STDIN上传递值(这是您正在尝试的方法,但与您尝试的方式不太一样) 当您使用
|
时,您正在将左侧命令的“标准输出”发送到右侧命令的“标准输入”。因此,当您像您显示的那样链接命令时,第一个echo
将输出发送到第二个echo
——后者将忽略它。那不是你想要的
您需要一个输出用户名、行尾字符、密码和另一个行尾字符的命令。使用echo做这件事并不容易(至少,不便于携带)。你可以这样做
git clone *url* <<EOF
$username
$password
EOF
git clone*url*让我假设这个问题与git无关,与安全无关
我对“如何将两个变量传递给
“方案”是:
也就是说,只需输出两个由换行符分隔的字符串(echo
添加换行符);或者一次完成
调用echo
:
echo "$username
$password" | git clone 'url'
是的,我知道这是可行的。我正在使用Jenkins来自动化包括一系列Git命令的过程。但如果我这样做,当密码和用户名错误时,GitHub API将发送包含用户名和密码的响应,Jenkins将记录该响应,并向公众披露用户名和密码。哈哈。是的,但问题是如何在bash中的git clone
命令中传递用户名/密码。为了清楚起见,你应该在问题中澄清这一点。如果您担心安全性,请考虑在Git中配置用户名/密码(<代码> git配置文件< /代码>),以便不必每次输入它。
echo "$username
$password" | git clone 'url'