可変引数を使用したシステム コマンドの実行の解決
多くのシナリオでは、可変の数の引数を必要とするシステム コマンドに遭遇するのが一般的です。ただし、単純なスクリプトでこのようなコマンドを実行すると、基本的な 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 サイトの他の関連記事を参照してください。