我希望我的bash脚本将字符串写入标准输入流。我希望它将密码传递给git push
命令。我已经尝试了以下三个选项,但它们都没有工作:git问我密码。
#!/bin/bash
# 0
git push origin master <<< 'password'
# 1
echo 'password' | git push origin master
# 2
git push origin master <<EOF
password
EOF
答案 0 :(得分:3)
所有这三种方法都可以将字符串password
传递给命令。
问题是命令无法从标准输入读取密码。它从控制终端读取它,即打开特殊文件/dev/tty
并从那里读取。
在ssh传输的情况下,它实际上是ssh,它询问密码并且它以上述方式执行(因此,此讨论适用于基于ssh的ssh或工具的任何其他使用)。在http传输的情况下,git以相同的方式执行。
原因有两个:
有关如何使用git remote命令而不是每次都给出密码,请参阅Git push: username, password, how to avoid?。如果您坚持使用http,则Is there a way to skip password typing when using https:// on GitHub?或Git http - securely remember credentials中的选项会更安全。另请参阅gitcredentials(7)。