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

Goで複数のシェルコマンドを連続して実行するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-25 05:06:11
オリジナル
842 人が閲覧しました

How to Execute Multiple Shell Commands Sequentially in Go?

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート