Bash代码:while循环不起作用

时间:2013-11-07 10:57:23

标签: bash logging while-loop

我尝试编写一个小的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

2 个答案:

答案 0 :(得分:1)

只需更改“>”签署“-ge”。

if [[ $COUNTER -ge 100 ]];

Bash语言非常陈旧 - 使用不同的关键字执行字符串和数字比较。

答案 1 :(得分:1)

参考接受的答案:while

[[ $COUNTER -ge 100 ]]

有效,我仍然建议使用等效的

((COUNTER >= 100))

相反,因为它更具可读性。