いくつかのファイルを生成する他のスクリプトを呼び出すシェル スクリプトがあります。シェル スクリプトの最後で、生成されたすべてのファイル (プレフィックスが同じ) をフォルダーに移動したいと考えています。
ただし、何らかの理由でmv
、スクリプトの最後に呼び出しがあると、ファイルシステムがまだファイルについて認識していないように、このエラーが発生します。
mv: cannot stat `foo_*': No such file or directory
これを「解決」する最初の試みは、sleep
この問題を回避するために数秒の呼び出しを導入することでしたが、値が非常に高く、ファイルが既に作成されていると確信していたにもかかわらず、同じエラーが発生しました。
次に、次のようにスクリプトを実行してみました。
sh myscript.sh ; mv foo_* bar
そして問題なく動作しました。
これが発生する理由と、目的の効果を得るために 2 つのスクリプトまたは 2 行のコマンドを使用する必要を回避する方法を教えてください。
ありがとう。
編集:私は、Googleからここに来て、同様の問題を抱えている可能性のある人のためにこれを書いています.
基本的に、次のmv
ようなコマンドを生成していました。
mv $preffix"_*" $destination
何らかの理由で、それが正しく機能していませんでした。次のような一時変数を作成しました。
MV_CMD=$preffix"_*" $destination
そして、次のように呼び出しました:
mv $MV_CMD
.
誰かがよりクリーンな方法を知っている場合は、お気軽に答えてください。回答ありがとうございます。