0
背景:ローカルのユーザー名がgitユーザー名と同じでない場合、gitは〜/ .netrcが存在する場合でもパスワードを要求します(Enterキーを押すとnetrcが使用されますが、このEnterは必須です) 。expect:すべての出力を保持する方法?
質問:私は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はオプションではありません。あなたの時間を無駄にしないでください。
が完璧です。ありがとう。 1つの問題:すべてのgit出力が2回印刷されるようになりました。 – sds
あなたのexpectスクリプトに 'log_user 0'を追加してください。 –