背景:当本地用户名与git用户名不同时,即使有~/.netrc,git也会坚持要求输入密码(可以回车,然后使用netrc,但这个回车是必须的)。
问题:我需要执行 git pull 将密码传递给 git,但我想查看 git 对 stdout 的回复(可能稍后重定向)。我试过
#!/usr/bin/expect -f
spawn /usr/bin/git $argv
expect Password:
send "secret"
它似乎工作,但我没有看到 git 输出。
我试过简单
puts "$expect_out(buffer)"
和花哨的
while (1) {
expect {
eof {break}
-re ".*" {puts "$expect_out(buffer)"}
}
}
甚至更高级
while (1) {
expect {
-re "(\[^\n]*\)\n" { send_user $expect_out(buffer) }
eof {break}
}
}
更简单一点
while (1) {
expect {
"\n" { send_user $expect_out(buffer) }
eof {break}
}
}
并且都不打印 git 输出。
PS。在这种特定情况下,ssh 不是一个选项,请不要浪费时间谈论它。