扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
我编写了一个 glob() 调用来测定默认的 CONFFILE,因为用户的主目录可能在任意位置。如果
CONFFILE 中包含非法数据, AppConfig 就会自动地停止整个程序(这可以修改为只提出一个警告)。脚本甚至不需要配置文件就可以运行。
打印了帮助文本后,我将 CVS_RSH 设置为适当的值(默认是 ssh )。这是为了让用户不必再以其他方式设置环境变量,这对那些将 maintain.pl 放入 crontab 中的用户来说尤其方便。
完成预备工作后,让我们来看脚本的核心部分:
清单 8: maintain.pl 的主循环
|
这是一个简单的循环。我遍历每个 spot (这些实际上是目录),如果 spot 的级别低于或等于 LEVEL 配置变量(默认为 5),则执行 cvs update 。另外,如果设置了 COMMIT 标记,我会执行 cvs commit -m '' ,这将提交所有的修改,并给出一个空日志消息。实际上,如果没有 DRYRUN 标识,这个循环将只有几行长。
我以字符串格式而不是多参数格式来使用 system() 。您可以用第二种方式来使用——查看 perldoc -f system 以获得关于这个函数调用用法的细节。
此外,我没有检查 system() 调用 的结果,因为没有必要。在发生 CVS 更新或提交问题的时,maintain.pl 不能(或者不应该)任何事情,因为这些是重要的配置文件,我们不希望盲目地更新。
配置文件本身是简单的:
清单 9. maintain.conf
|
不要忘记,在这里您可以设置任何 AppConfig 变量 ,所以,举例来说,您可以覆盖默认的 LEVEL 或 CVS_RSH 。我通过 maintain.pl 更新我的 Emacs、config、articles 和 gnus 目录,不过它们的更新级别不同,以反映我更新的频率(我每天更新级别为 0 的条目两次,级别为 1 的一次)。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者