【发布时间】:2016-05-22 02:39:25
【问题描述】:
我正在使用fbi 为幻灯片编写一个简短的脚本。为了完整起见,脚本在 Ubuntu 机器上自动登录后执行,该机器应该无头运行;机器唯一的外部接口应该是我添加/删除图像的 Samba 文件夹。
我开始很容易:
usr/bin/fbi -noverbose -a -t 4 -u `find -type f | egrep -i "(jpg|bmp|png|gif)$"`
这很好用:find/egrep 返回fbi 以 4 秒间隔显示的文件列表。
现在,当添加新图像或删除现有图像时,我需要刷新我的幻灯片列表。我试过watch,没有成功。
如果我从命令行执行这个:
watch -n 300 -t `find -type f | egrep -i "(jpg|bmp|png|gif)$"`
我得到相同的文件列表,每当我将图像添加到目标文件夹时,列表会在接下来的 5 分钟内更新。美好的。但是当我将它添加到我的脚本中时,没有任何效果:
/usr/bin/fbi -noverbose -a -t 4 -u `watch -n 300 -t 'find -type f | egrep -i "(jpg|bmp|png|gif)$"'`
有了这个,我什么也得不到,当我中断幻灯片时,我的命令行被搞砸了(没有回车,没有打字回声......)。
我做错了什么/忽略/错过了什么?还是我完全偏离了目标?
因为另一种解决方案是有两个脚本,幻灯片的一个和一个控制器脚本(可能使用 inotify-tools),当目标文件夹被修改时终止并重新启动幻灯片脚本。
任何建议或提示,非常感谢!
皮疹*
【问题讨论】:
-
watch看起来不太适合脚本,我认为您应该使用while循环和sleep命令 -
@golimar:是的,谢谢,一位朋友已经警告我手表不适合脚本...我真的是一个 bash 新手...
标签: bash shell slideshow watch inotify