ホームページ > バックエンド開発 > Golang > Go で変数引数を使用してシステムコマンドを効率的に実行するにはどうすればよいですか?

Go で変数引数を使用してシステムコマンドを効率的に実行するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-22 05:05:09
オリジナル
603 人が閲覧しました

How to Efficiently Execute System Commands with Variable Arguments in Go?

可変引数を使用したシステム コマンドの実行の解決

多くのシナリオでは、可変の数の引数を必要とするシステム コマンドに遭遇するのが一般的です。ただし、単純なスクリプトでこのようなコマンドを実行すると、基本的な 1 単語コマンドを超えるコマンドを実行しようとすると問題が発生する可能性があります。

前に紹介したサンプル Go スクリプトでは、echo newline >> のようなコマンドを実行しようとします。 foo.o ではエラーが発生し、スクリプトがコマンドを認識できなかったことを示しています。これは、実行プロセスでコマンドとその引数が分離されていないことが原因である可能性があります。

「sh」を使用して問題を解決する

回避できる解決策が 1 つ見つかりました。この制限には、sh (シェル) コマンドの使用が含まれます:

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

簡素化され効率的アプローチ

Go の可変個引数サポートを利用するより良い代替案は次のとおりです。

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

  out, err := exec.Command(head, parts...).Output()
  if err != nil {
    fmt.Printf("%s", err)
  }
  fmt.Printf("%s", out)
}
ログイン後にコピー

このソリューションは Go の可変個引数を利用し、可変個の引数を渡すことができます。コマンドの引数。 head 変数はコマンド自体を表し、parts は残りの引数を保持します。可変長引数を利用することで、sh などの外部コマンドの必要性がなくなり、より効率的で簡単な実行プロセスが実現します。

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

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