我已经编写了一个简短的bash脚本,用于为几个文件夹设置iNotify,然后调用Python脚本将创建的文件中的文本上传到for服务。该过程对于列表中的第一个文件夹运行良好,但对于其他文件夹,create事件似乎没有触发。我假设我的脚本结构是正确的。有什么想法吗?代码基本上是:
#!/bin/bash
inotifywait -m --format '%w%f' -e create /Folder1 | while read FILE
do
echo $FILE
# upload file
python /Scripts/UploadFileContents.py 'PAUR' $FILE
done
inotifywait -m --format '%w%f' -e create /Folder2 | while read FILE
do
echo $FILE
# upload file
python /Scripts/UploadFileContents.py 'RACH' $FILE
done
inotifywait -m --format '%w%f' -e create /Folder3 | while read FILE
do
echo $FILE
# upload file
python /Scripts/UploadFileContents.py 'CDR' $FILE
done
inotifywait -m --format '%w%f' -e create /Folder4 | while read FILE
do
echo $FILE
# upload file
python /Scripts/UploadFileContents.py 'CHR' $FILE
done
inotifywait -m --format '%w%f' -e create /Folder5 | while read FILE
do
echo $FILE
# upload file
python /Scripts/UploadFileContents.py 'PRMS' $FILE
done提前感谢您的帮助。
发布于 2013-05-24 21:16:39
您必须在后台启动inotifywait脚本,因为它们将被阻塞,直到出现更改
发布于 2013-11-08 22:40:08
您的第一个while循环永远不会结束。inotifywait -m是一个永远运行的命令。
最重要的是inotifywait本身是阻塞的,所以把它们都放到一个循环中并删除m标志也不会对你有任何帮助。
对于您来说,最简单的解决方案是将它们分解到多个脚本中。
或者更理想的做法是设置一个接受少量参数的脚本,因为大多数逻辑都是重复的。
您可以用$1替换/Folder1,用$2替换您的第二个变量,然后调用您的脚本,传递您想要监视的文件夹。
./watch.sh /Folder1 PAUR &
./watch.sh /Folder2 RACH &您可以创建第二个脚本,该脚本调用第一个脚本,其中包含您要监视的所有文件夹,以便为每个文件夹运行一个脚本。
https://stackoverflow.com/questions/16735853
复制相似问题