ホームページ >バックエンド開発 >Golang >Go を使用して同じシェル内で複数の「exec」コマンドを連続して実行するにはどうすればよいですか?

Go を使用して同じシェル内で複数の「exec」コマンドを連続して実行するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-26 17:43:11954ブラウズ

How to Run Multiple `exec` Commands Sequentially in the Same Shell Using Go?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。