0

背景: ローカルのユーザー名が 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 はオプションではありません。それについて話すのに時間を無駄にしないでください。

4

1 に答える 1

2

パスワードを入力した後、「Enter キーを押す」必要があります。send "secret\r"

于 2012-04-17T09:19:34.773 に答える