0

温度ログを書くための小さな bash コードを書いてみました。ロギング ファイルに 100 のタイムポイントと測定ポイントが書き込まれ、データが一時ファイルに移動され、元のファイルへの記録が再開されます。一時ファイルは 100 秒ごとに削除されます。これは、記録の最後の数分だけが必要であり、ゴミを防ぎたいためです。

その上、コードは不必要に複雑に見えるかもしれません (私は初心者です) - どこが間違っていますか? カウンター(何が起こっているかを確認するためだけに印刷されています)が100までカウントされると思っていましたが、印刷されるだけです:

1
2 

100 ではなく 2 つのタイムポイントのみをファイルに書き込みます。コードは次のとおりです。

#!/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
4

2 に答える 2

1

受け入れられた答えを参照する:while

[[ $COUNTER -ge 100 ]]

動作しますが、同等のものを使用することをお勧めします

((COUNTER >= 100))

代わりに、より読みやすいためです。

于 2013-11-07T13:18:12.540 に答える