Go を使用して同じシェルで複数の Exec コマンドを実行する
Go の os/exec パッケージでは、複数のコマンドを同時に実行すると問題が発生します。この記事では、同じシェル内でコマンドを連続して実行する必要がある特定のインスタンスについて説明します。
問題の説明
提供されたコードは、3 つのコマンドを連続して実行しようとします。
cd path; ./configure; make
ただし、2 番目のコマンド ./configure は、作業ディレクトリが設定されていません。
シェルを使用した解決策
単一のシェル インスタンス内でコマンドを実行するには、次のアプローチを使用できます:
cmd := exec.Command("/bin/sh", "-c", "cd path; ./configure; make") err := cmd.Run()
このコマンドは、オプション -c を指定してシェル (/bin/sh) を呼び出し、指定されたコマンドをシェル内で順番に実行します。これにより、cd は後続のコマンドの作業ディレクトリを変更できるようになります。
作業ディレクトリを使用した解決策
また、コマンドに対して特定のディレクトリのみを設定する必要がある場合は、作業ディレクトリは手動で設定できます:
config := exec.Command("./configure", "--disable-yasm") config.Dir = folderPath build := exec.Command("make") build.Dir = folderPath
コマンドの Dir フィールドを設定すると、コマンドが実行される前に作業ディレクトリが変更されます。実行され、コマンドが正しいディレクトリで実行されることが保証されます。
以上がGo を使用して同じシェル内で複数の「exec」コマンドを連続して実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。