4

使用しているperlスクリプトに次のコマンドがあります。

system ("mycommand /home/tahoar/ไมโคร_tm-อังกฤษ-ไทย/giza.อังกฤษ-ไทย/อังกฤษ-ไทย.A3.final.part*>/home/tahoar/ไมโคร_tm-อังกฤษ-ไทย/giza.อังกฤษ-ไทย/อังกฤษ-ไทย.A3.final")

コマンドは次のエラーで失敗します。

sh: cannot create /home/tahoar/ไมโคร_tm-อัง��ฤษ-ไทย/giza.อัง��ฤษ-ไทย/อัง��ฤษ-ไทย.A3.final: Directory nonexistent

私のトラブルシューティングでは、「mycommand」が実行されないことが判明しました。また、他のさまざまなコマンド (mycommand1、mycommand2 など) でも発生します。コマンド文字列は UTF-8 です。意図した出力パスは既に存在します。他の目的のために LC_ALL=C を設定しました。パスにラテン文字を使用しても、同じコマンドが正しく実行されます。

リダイレクトされた出力パスが壊れているのはなぜですか?

4

1 に答える 1

2

上記のコマンドを正確に試しました。ディレクトリが見つからない場合、まったく同じエラーが発生します。対応する mkdir の後、すべて問題ないようです。

あなたの場合、コマンドは実行されません。これは、perl が最初にリダイレクトを設定しようとする sh を開始し、次に準備されたリダイレクトに接続されたコマンドを開始するためです。-あなたの場合、shはリダイレクトの準備に失敗したため、実際のコマンドを開始できません。

「出力パスは既に存在します」と言うが、perl は「ディレクトリが存在しない」と言うように、あなたは両方とも異なるパスについて話しているようです。

perl 内から出力パスを mkdir または ls してみてください。次に、何が起こっているかを見ることができるはずです。

于 2012-12-24T11:09:53.477 に答える