我有一个 shell 脚本,它调用生成一些文件的其他脚本。在我的 shell 脚本结束时,我想将所有生成的文件(它们具有相同的前缀)移动到一个文件夹中。
但是,由于某种原因,如果我mv
在脚本末尾有调用,我会收到这个错误,就像文件系统仍然不知道我认为的文件一样。
mv: cannot stat `foo_*': No such file or directory
我第一次尝试“解决”这个问题是引入sleep
几秒钟的调用来帮助我避免这个问题,但是,即使值非常高并且我确定文件已经创建,我得到了同样的错误。
然后我尝试像这样运行我的脚本:
sh myscript.sh ; mv foo_* bar
它没有问题。
知道为什么会发生这种情况以及如何避免使用两个脚本或双行命令来达到预期的效果吗?
谢谢。
编辑:我正在为可能从谷歌来到这里并遇到类似问题的人写这篇文章。
基本上,我正在生成这样的mv
命令:
mv $preffix"_*" $destination
出于某种原因,这无法正常工作。刚刚创建了一个像这样的临时变量:
MV_CMD=$preffix"_*" $destination
然后就这样称呼它:
mv $MV_CMD
.
如果有人知道更清洁的方法,请随时回答。谢谢大家的回答。