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

Go で可変数の引数を指定してシステム コマンドを実行するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-20 13:04:12
オリジナル
1020 人が閲覧しました

How Can I Execute System Commands with a Variable Number of Arguments in Go?

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

特定のシナリオでは、未知の数の引数を使用してシステム コマンドを実行すると、問題が発生する可能性があります。 「ls」や「date」などの単一単語のコマンドはシームレスに機能しますが、より複雑なコマンドはプログラムのエラーを引き起こす可能性があります。この記事では、この問題を解決する解決策を検討します。

Go の os/exec パッケージには、コマンド文字列を入力として受け取る Command() 関数が用意されています。ただし、コマンドに複数の単語または引数が含まれている場合は、エラーが発生します。

そのようなコマンドを実行するには、別の方法として sh コマンドを使用します。 exec.Command("sh", "-c", cmd) を呼び出すと、シェルを使用して指定されたコマンドが実行され、任意の数の引数を持つ複雑なコマンドが可能になります。

さらに、より単純なアプローチも可能です。 Go の可変引数機能を活用することです。可変数の引数を受け入れる関数を定義し、それらを文字列のスライスに割り当てることで、コマンドを次のように実行できます。

func exeCmd(cmd string, wg *sync.WaitGroup) {
  fmt.Println("command is ", cmd)
  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)
  wg.Done() // Signal completion to waitgroup
}
ログイン後にコピー

可変個の引数を利用することで、可変数の引数を渡すことができます。これにより、前述の問題が発生することなく、複雑なシステム コマンドの実行が容易になります。

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

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