Bash 搞砸了执行顺序?

Bash screwing up execution order?

我正在使用 doxygen 生成一些文档,它会在一个文件夹中生成很多文件。

为了不必等待删除之前的文件夹,我决定在当前进程中移动文件夹,在单独的进程中删除移动的文件夹,然后创建 doxygen 文件。除了发生的事情是移动的文件夹仍然被 doxygen 引用。这是代码:

mv doxygen/ doxygen.tmp
rm -rf doxygen.tmp&
doxygen Doxyfile

我最初将它写在一行中,但像这样将它放入多行脚本文件中并没有什么不同。

可能是什么导致了这个问题?它可能是由cygwin错误引起的吗?还是我遗漏了什么?

注意:使用的 doxygen 是用于 windows 的,而不是 cygwin。我只使用 cygwin 进行作业控制。 windows 速度更快,因为它不使用 fork,后者在 cygwin 上是一种昂贵的仿真。

编辑:windows 和 cygwin 版本的 doxygen 都显示了以下我之前没有注意到的内容:

windows:

...
Searching for files in directory C:/cygwin/home/Adrian/Projects/genLang
Searching for files in directory C:/cygwin/home/Adrian/Projects/genLang/doxygen
Searching for files in directory C:/cygwin/home/Adrian/Projects/genLang/tmpaaaa
Searching for files in directory C:/cygwin/home/Adrian/Projects/genLang/tmpaaaa/html
Searching for files in directory C:/cygwin/home/Adrian/Projects/genLang/tmpaaaa/html/d0
...

cygwin:

...
Searching INPUT for files to process...
Searching for files in directory /home/Adrian/Projects/genLang
Searching for files in directory /home/Adrian/Projects/genLang/doxygen
Searching for files in directory /home/Adrian/Projects/genLang/tmpaaaa
Searching for files in directory /home/Adrian/Projects/genLang/tmpaaaa/html
Searching for files in directory /home/Adrian/Projects/genLang/tmpaaaa/html/d2
...

我找到问题了。

问题不在于 inode 被占用或 bash 搞砸了,而是 doxygen 正在递归搜索目录以查找要记录的文件。由于文档被放置在与源代码相同的目录中,它会在文档目录中查找要记录的内容,这些内容将被删除,从而导致错误。添加这个:

EXCLUDE_PATTERNS       = doxygen*

或将 doxygen 文档目录移动到另一个路径位置可解决此问题。