0

我正在使用一个迷你 shell 脚本来“跟踪”(实时)一堆日志文件。

#!/bin/sh

oldGLOBIGNORE=$GLOBIGNORE

export GLOBIGNORE='foo-bar.log'

sudo -E tail -f -n0 /var/log/*.log

GLOBIGNORE=$oldGLOBIGNORE

如您所见,我想记录除名为foo-bar.log.

sudo的-E选项应该允许我保留GLOBIGNORE变量,但看起来它不起作用。

我正在 Ubuntu 10.04、bash 4.1.5 上进行测试。

有什么线索吗?

4

1 回答 1

3

首先 -GLOBIGNORE与文件名扩展产生的完整文件路径有关,而不仅仅是最后一部分。所以你实际上想写GLOBIGNORE='/var/log/foo-bar.log'.

其次,您实际上不需要导出GLOBIGNORE到环境中并添加-E,因为/var/log/*.logBash 甚至在调用sudo.

第三 - 您保存旧值GLOBIGNORE并在之后恢复它的方法不太理想,因为GLOBIGNORE未设置时的行为与其设置但为空时的行为不同,并且您的脚本永远无法将其恢复为未设置。幸运的是,脚本不需要恢复它(因为脚本的变量不会在脚本返回后继续生效),所以你可以删除那些东西。

总而言之,你可以写:

#!/bin/sh

GLOBIGNORE=/var/log/foo-bar.log
sudo tail -f -n0 /var/log/*.log
于 2012-11-08T16:57:46.750 回答