【发布时间】:2012-04-17 05:39:22
【问题描述】:
BACKGROUND:当本地用户名与git用户名不同时,即使有~/.netrc,git也会坚持要求输入密码(可以按Enter然后使用netrc,但是这个Enter是必需的)。
问题:我需要执行 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)"}
}
}
甚至fancier
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 不是一个选项,请不要浪费时间谈论它。
【问题讨论】:
标签: expect