在true循环返回之前如何将数据写入文件

时间:2019-07-18 21:26:24

标签: bash

我有一个while true循环,用于查询数据并将其写入文件。循环在下一次迭代之前休眠0.5秒。问题是循环比查询返回数据所花费的时间要快,因此文件有时为空。

增加睡眠时间可以解决此问题,但是,对于程序的其余部分保持0.5至关重要。另一个简单的解决方法是限制要查询的数据量(即加快数据量),但保持不变也很关键。

while true; do
filename=/tmp/parameter_file.txt
[ -f ${filename} ] || cat > ${filename} << _EOVARS
parameter1
parameter2
parameter3
_EOVARS

(
echo "file.timestamp $(date '+%s.%N')";
paste -d' ' ${filename} <(client parameter ${filename} | sed '1d; /^--/d ; s/^.*= *//g')
) > Foo.txt

sleep 0.5
done

在代码块中,“客户端”是一个脚本,用于获取$ {filename}中每个“参数”的值。

Foo.txt有时被填充,而其他时候为空。所需的行为是在每次循环迭代中完全填充文件。

编辑:在代码块中添加了匹配的括号以显示子外壳。在代码块中添加了“客户端参数”的描述。添加了$ {filename}的内容。

0 个答案:

没有答案