![手动文件夹观察器进行传输?](https://linux22.com/image/136530/%E6%89%8B%E5%8A%A8%E6%96%87%E4%BB%B6%E5%A4%B9%E8%A7%82%E5%AF%9F%E5%99%A8%E8%BF%9B%E8%A1%8C%E4%BC%A0%E8%BE%93%EF%BC%9F.png)
由于某种原因,传输的watch-dir
功能对我不起作用(我尝试了一些找到的“解决方案”,但没有任何效果)。因此,我为自己制作了一个脚本来提供该脚本(请注意,我将此脚本放入crontab
每小时运行一次的脚本中,因此我需要为所有内容添加完整路径):
#!/bin/bash
prefix='/home/user'
folder=$prefix'/path/to/watched/dir'
cd $folder
count=$(ls -1 *.torrent 2>/dev/null | wc -l)
if [ $count != 0 ];then
echo $count torrents files found
for torrent in '*.torrent'; do
echo adding $torrent
transmission-remote -n 'transmission:transmission' -a $folder/"$torrent"
rm $folder/$torrent
done
else
echo no torrents found
fi
我从这个脚本得到的是,如果只有 1 个 torrent 文件,它就可以工作。但如果有 2 个或更多,则仅添加其中 1 个,所有这些都将被删除,并且该行echo adding $torrent
显示所有种子。
我究竟做错了什么?
答案1
我怀疑这条线
for torrent in '*.torrent'; do
没有扩展到文件列表,因为您已经将其括在引号中。每次$torrent
使用后它都会扩展,但这会立即将所有文件传递给传输。
将此行重写为
for torrent in *.torrent; do
我也推荐使用nullglob
.看for 循环 glob 事故。
此外,inotify-wait
还可用于在目录中创建文件时触发 shell 脚本。