【发布时间】:2017-12-13 19:55:57
【问题描述】:
谷歌搜索了很多,但令人惊讶的是,没有找到可行的解决方案。我是工程师,不是程序员。只需要这个工具。
所以:我有一个文件“test2.dat”,每次更改时我都想对其进行 grep。
我没有安装 inotifywait 或 when-changed 或任何类似的东西,我也无权这样做(我什至不想这样做,因为我希望这个脚本能够普遍工作)。
有什么建议吗?
What I tried:
LTIME='stat -c %Z test2.dat'
while true
do
ATIME='stat -c %Z test2.dat'
if [[ "$ATIME" != "$LTIME" ]]
then
grep -i "15 RT" test2.dat > test_grep2.txt
LTIME=$ATIME
fi
sleep 5
done
但这基本上没有任何作用。
【问题讨论】:
-
如果你删除
-i会发生什么? -
谢谢。实际上什么也没有发生。甚至在删除 -i 之前。脚本没有做任何事情,我上面提到的最初的成功一定是偶然的。
-
@Jewenile:为什么单引号内有命令?您是否期望命令运行并将输出存储在变量中。
bash中的命令替换语法是做$(cmd),所以LTIME=$(stat -c %Z test2.dat)应该是正确的语句 -
我认为这就是为什么它执行一次 grep,它进入
if clause,因为它是真的,但是你在 if 中有LTIME=$ATIME,这就是为什么它没有再次进入 if 子句他们变得平等。要检查是否是这种情况,请在fi之后执行echo -
Inian:因为我在某个地方发现了。我对 bash 语法了解不多,因为我正在学习。不是程序员。将尝试实施您的提示。编辑:谢谢,它有效! :)