Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 按顺序传递两个变量_Linux_Bash_Git_Shell - Fatal编程技术网

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'