背景: ローカルのユーザー名が git のユーザー名と異なる場合、git は ~/.netrc が存在する場合でもパスワードを要求します (Enter を押してから netrc を使用できますが、この Enter は必須です)。
質問: パスワードを git に渡す git pull を実行する必要がありますが、標準出力 (および後でリダイレクト) で git が応答するものを確認したいと考えています。私は試した
#!/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 はオプションではありません。それについて話すのに時間を無駄にしないでください。