所以在我的bash shell脚本中,我让它在for循环中运行。在for循环中,我每次使用find "$myarray[i]" >> $tmp
来查找某个目录。有时,它会在myarray[i]
中找到变量,有时则不会。当它在myarray[i]
中找到某些内容时,我希望它能够执行echo "<br>" >> $tmp
。有没有办法让我在执行$tmp
行后检查find
是否已更改,以便我知道何时执行echo "<br>" >> $tmp
行?
答案 0 :(得分:1)
我会存储find
的输出,如果非空,则回显换行符:
found=$(find . -name "${myarray[i]}")
if [[ -n $found ]]; then
{ echo "$found"; echo "<br>"; } >> "$tmp"
fi
答案 1 :(得分:1)
如果你的目标是在文件系统事件发生时采取行动(例如文件更新或目录创建),我就避免编写自定义轮询循环。相反,请使用专门为该用例创建的多个工具之一。
Linux工具&#34; inotify&#34;似乎很受欢迎,并且它有诸如inotify-tools之类的包装器,以便更容易从命令行调用。还有跨平台的Python软件包&#34; watchdog&#34;,.NET / mono工具&#34; System.IO.FileSystemWatcher&#34;,OSX内置实用程序&#34;文件夹操作&#34;,&#34; fswatch&#34;等。
很容易弄乱轮询,并且难以正确处理自动重启,异常文件名和文件系统错误等问题。创建特定于目的的工具是因为使用(简单)bash循环没有好办法。