我想编写一个监视文件更改的shell脚本。也就是说,我编写的另一个程序根据文件的状态将 1 或 0 写入文件。我想创建一个无限期运行的脚本,并监控这个文件的状态。到目前为止,我已经通过使用 tail -f 在网上找到了一个接近的解决方案。但是,此命令希望文件不断追加。当我运行以下代码时,我得到tail: test.log: file truncated
. echo 1 > test.log
此外,当我通过在另一个终端上echo 0 > test.log
来回运行来测试该程序时,似乎它会定期完全错过文件中的更改。可能与 tail 希望在附加文件时跟随文件有关,而不是仅仅更改单个字符(因此认为文件已被截断,我想)。
这是我尝试过的代码:
#!/bin/sh
# Monitor changes in file
tail -fn0 test.log | \
while read line; do
if [ $line = 1 ]; then
echo "TRUE!!!"
elif [ $line = 0 ]; then
echo "FALSE!!!"
fi
done
解决方案可能非常简单,但我无法找到它。