ホームページ >バックエンド開発 >Golang >Go で動的システム コマンドを実行する際の「実行可能ファイルが見つかりません」エラーを可変引数で解決するにはどうすればよいですか?

Go で動的システム コマンドを実行する際の「実行可能ファイルが見つかりません」エラーを可変引数で解決するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-08 13:31:11772ブラウズ

How Can Variadic Arguments Solve

動的コマンド実行のための可変個引数の利用

システム コマンドの引数の数が不明な状況では、分割を使用します。可変個引数を使用した -and-assemble アプローチは、洗練されたソリューションを提供します。

提供されたコードでは、複数の引数を指定して複雑なコマンドを実行しようとすると、「実行可能ファイルが見つかりません」などのエラーが発生します。これは、コードが引数を個別に指定せずに単一単語のコマンドを想定しているためです。

この制限を克服するには、次の解決策を検討してください。

func exeCmd(cmd string, wg *sync.WaitGroup) {
    fmt.Println("command is ", cmd)
    // Split command into head (e.g., 'g++') and parts (remaining arguments)
    parts := strings.Fields(cmd)
    head := parts[0]
    parts = parts[1:]

    out, err := exec.Command(head, parts...).Output()
    if err != nil {
        fmt.Printf("%s", err)
    }
    fmt.Printf("%s", out)
    wg.Done()
}

この更新されたコードは Go の可変個引数機能を使用しています。 3 つのドット「...」で示されます。その仕組みは次のとおりです:

  1. コマンドの分割: コマンド文字列は、先頭 (最初の単語、例: 'g ') と部分 (残りの引数) に分割されます。 .
  2. コマンドの再構築: 次に、head が最初の引数として渡されます。 exec.Command()。残りの部分は自動的に可変引数として渡され、元の引数を含む完全なコマンドが効果的に作成されます。
  3. コマンドの実行: 構築されたコマンドが実行され、出力またはエラーが処理されます。

このソリューションは、可変引数を採用することにより、さまざまな数の引数を使用してシステム コマンドを実行する際の柔軟性を提供し、特に次のような場合に役立ちます。コマンドが動的に生成される状況

以上がGo で動的システム コマンドを実行する際の「実行可能ファイルが見つかりません」エラーを可変引数で解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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