ユーザー入力が必要な外部コマンドを実行する場合、このプロセスを効果的に自動化するのは難しい場合があります。外部コマンドがユーザー名とパスワードの入力を待つ次のシナリオを考えてみましょう。
この問題の核心は、コマンドの標準入力の複数のフィールドに入力を提供することにあります。 1 つのアプローチは、バイト バッファーを使用することです。
login := exec.Command(cmd, "login") var b bytes.Buffer b.Write([]byte(username + "\n" + pwd + "\n")) login.Stdout = os.Stdout login.Stdin = &b login.Stderr = os.Stderr
ここでは、バイト バッファー b が作成され、改行文字で区切られたユーザー名とパスワードの生の入力値が設定されます。次に、ログイン コマンドの Stdin フィールドがバッファにリンクされます。これにより、外部コマンドは実行時に事前設定されたバッファから入力を読み取ることが保証されます。
入力バッファは、データを順番に保存することで複数の行を処理できます。コマンドは入力を読み取ると、改行文字をフィールド区切り文字として扱い、バッファーを 1 文字ずつ反復処理します。これにより、コマンドの stdin への複数の入力の自動入力が可能になります。
バイト バッファを利用し、それを外部コマンドの Stdin として設定することで、複数の値を効率的に入力できます。プログラム内で実行できるため、手動入力や入力ストリームの複雑な処理が不要になります。この方法は、外部コマンドの入力を自動化し、コードベースを簡素化し、プログラム フローを改善する便利な方法を提供します。
以上がGo で外部コマンドのユーザー入力を自動化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。