ホームページ > バックエンド開発 > Golang > Go `exec.Command('mv', '*')` が「終了ステータス 1」で失敗するのはなぜですか?

Go `exec.Command('mv', '*')` が「終了ステータス 1」で失敗するのはなぜですか?

DDD
リリース: 2024-12-16 04:12:57
オリジナル
532 人が閲覧しました

Why Does My Go `exec.Command(

Go: ワイルドカード文字を使用するとエラー「コマンドの実行に失敗しました」

Go の exec パッケージを使用して「mv」コマンドを実行しようとすると、「終了ステータス 1」というエラー メッセージが表示される場合があります。この問題は、コマンドで「*」などのワイルドカードを使用するときに発生します。

問題は、シェルがコマンドを解釈する方法にあります。ワイルドカードがシェルに入力されると、一致するファイル名のリストに展開されます。ただし、exec パッケージを使用する場合、ワイルドカードは展開されず、ワイルドカード自体を引数として使用してコマンドが実行されます。

この問題を解決するには、次の 2 つのアプローチが可能です。

  1. Use filepath.Glob: filepath.Glob 関数を使用してワイルドカードをファイル名のリストに手動で展開し、結果のスライスを次のように渡します。
  2. シェルの呼び出し: バイナリとして「/bin/sh」と「-c」を指定した exec.Command を使用してシェルを呼び出し、シェルのワイルドカード拡張機能を利用します。引数として。シェルは、コマンドを「mv」実行可能ファイルに渡す前にワイルドカードを展開します。

以上がGo `exec.Command('mv', '*')` が「終了ステータス 1」で失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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