首页 > 解决方案 > 依次传递两个变量

问题描述

Unix shell中,git clone <url>将提示用户输入用户名,然后输入密码。

我定义了$username变量$password

我怎么能按顺序将两个变量传递给命令。

我试过 echo $password | echo $username | git clone <url> 了,没用

标签: linuxbashgitshell

解决方案


有几种方法可以做到这一点。您可能应该做的,因为它更安全,是使用脚本不必包含和传递用户名和密码的配置。例如,您可以设置 ssh,或者您可以使用凭证助手。(详细信息取决于您的环境,因此我建议您搜索现有问题和答案:如何设置这些问题。)

如果您仍然希望脚本传递值,您基本上有两种选择:您可以使用 git 命令的形式在命令行上获取值(请参阅brokenfoot 的答案),或者您可以在 STDIN 上传递值(这是您正在尝试的方法,但与您尝试的方式不同)。

使用 时|,您将左侧命令的“标准输出”发送到右侧命令的“标准输入”。因此,当您像显示的那样链接命令时,第一个echo是将输出发送到第二个echo- 它会忽略它。那不是你想要的。

您将需要一个输出用户名、行尾字符、密码和另一个行尾字符的命令。用 echo 做这件事并不容易(至少,不可移植)。你可以做类似的事情

git clone *url* <<EOF
$username
$password
EOF

推荐阅读