Go の単一シェル内で複数のコマンドを実行する
複数のコマンドを連続して実行することは、シェル スクリプトの一般的なタスクです。 Go の os/exec パッケージはコマンドを実行する機能を提供しますが、同じシェル内で複数のコマンドを実行する方法はすぐには分からないかもしれません。この記事では、この問題の解決策を説明します。
提供されているサンプル コードの目標は、cd、./configure、および make コマンドを順番に実行することです。最初、コードは各コマンドを個別に開始することでこれを達成しようとしますが、各コマンドが新しいシェルで実行されるため、このアプローチは失敗し、./configure.
に対して「そのようなファイルまたはディレクトリはありません」エラーが発生します。同じシェル内でコマンドを実行するには、次の構文を使用できます。
cmd := exec.Command("/bin/sh", "-c", "command1; command2; command3; ...") err := cmd.Run()
ここでは、シェル /bin/sh が -c オプションで呼び出されます。提供されたコマンドを解釈します。ただし、この方法では、シェル インジェクションの脆弱性を防ぐためにユーザー入力を慎重に処理する必要があります。
別のアプローチは、コマンドを実行する前に現在の作業ディレクトリを設定することです。
config := exec.Command("./configure", "--disable-yasm") config.Dir = folderPath build := exec.Command("make") build.Dir = folderPath
このアプローチでは、次のことが保証されます。コマンドはシェルに依存せず、指定されたディレクトリで実行されます。これは、同じ端末セッション内で cd パスを実行してから ./configure と make を実行する動作を模倣します。
以上がGoで複数のシェルコマンドを連続して実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。