我编写了一个简短的bash脚本,为几个文件夹设置iNotify,然后调用Python脚本将文本从创建的文件上传到webservice。该过程适用于列表中的第一个文件夹,但创建事件似乎没有为其他文件夹触发。我假设我已经正确地构建了我的脚本。有任何想法吗?代码基本上是:
#!/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
提前感谢您的任何帮助。
答案 0 :(得分:1)
您必须在后台启动inotifywait
脚本,因为它们会阻止,直到出现更改
答案 1 :(得分:1)
你的第一个while循环永远不会结束。 inotifywait -m是一个永远运行的命令。
最重要的是,inotifywait本身就是阻塞,所以将它们全部分解为一个循环并删除m标志也无济于事。
最简单的解决方案是将它们分解为多个脚本。
或者更理想的是设置一个接受一些参数的脚本,因为大多数逻辑都会重复。
你可以用$ 1替换/ Folder1 和你的第二个变量2美元 然后调用脚本传递您要观看的文件夹。
./watch.sh /Folder1 PAUR &
./watch.sh /Folder2 RACH &
您可以创建第二个脚本,调用包含您要监视的所有文件夹的第一个脚本,每个文件夹运行一个脚本。