ホームページ > バックエンド開発 > Golang > Go でマルチワード システム コマンドを正しく実行するにはどうすればよいですか?

Go でマルチワード システム コマンドを正しく実行するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-13 04:37:20
オリジナル
565 人が閲覧しました

How Can I Correctly Execute Multi-Word System Commands in Go?

システム コマンド実行における引数の曖昧さを克服する

このシナリオでは、ファイルにコンテンツを追加するのと同様のシステム コマンドを実行することを目的としています。ただし、コマンドが 1 つの単語を超えると、プログラムでエラーが発生します。

問題の特定
最初のコードはコマンドを直接実行しようとし、コマンドとコマンドを区別できません。その議論。これは、コマンドが複数の単語で構成されている場合に問題になります。

解決策
これに対処する 1 つの方法は、提案された解決策に見られるように、シェルを仲介者として利用することです。

out, err := exec.Command("sh", "-c", cmd).Output()
ログイン後にコピー

-c フラグは、シェルに cmd をコマンドとして解釈するように指示し、プログラムがコマンドとその引数の両方を指定できるようにします。

代替的で効率的なアプローチ
より効率的で簡単なアプローチでは、Go の可変引数を利用します。

func exeCmd(cmd string, wg *sync.WaitGroup) {
  parts := strings.Fields(cmd)
  head := parts[0]
  parts = parts[1:len(parts)]

  out, err := exec.Command(head, parts...).Output()
}
ログイン後にコピー

このアプローチでは、コマンドは次のように分割されます。その先頭 (主なコマンド) と残りの引数を含むスライス。次に、ヘッドとパーツが引数として exec.Command に渡されます。

以上がGo でマルチワード システム コマンドを正しく実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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