我尝试编写一个小的bash代码来编写温度记录。在记录文件中写入100个时间点和测量点,然后将数据移动到临时文件中,它应该开始再次记录到原始文件中。临时文件每100秒被删除一次,因为我只需要最后几分钟的记录并且想要防止垃圾。
除此之外,代码可能看起来不必要地复杂(我是初学者) - 错误在哪里? 我期望计数器(打印只是为了看看发生了什么)将计为100,但它只打印出来:
1
2
它只在文件中写入两个时间点而不是100。 这是代码:
#!/bin/bash
COUNTER=0
#Initial temporary file is created
echo '' > temperaturelogtemporary.txt;
#100 timepoints are written into temperaturelog.txt
while true; do
echo `date` '->' `acpi -t`>> temperaturelog.txt;
sleep 1;
#as soon as 100 timepoints are recorded...
if [[ $COUNTER > 100 ]];
then
#...the old temporary file is removed and
#the last records are renamed into a new temporary file
rm temperaturelogtemporary.txt;
mv temperaturelog.txt temperaturelogtemporary.txt;
COUNTER=0;
fi
COUNTER=$(($COUNTER + 1));
echo $COUNTER;
done
答案 0 :(得分:1)
只需更改“>”签署“-ge”。
if [[ $COUNTER -ge 100 ]];
Bash语言非常陈旧 - 使用不同的关键字执行字符串和数字比较。
答案 1 :(得分:1)
参考接受的答案:while
[[ $COUNTER -ge 100 ]]
有效,我仍然建议使用等效的
((COUNTER >= 100))
相反,因为它更具可读性。