温度を記録するスクリプト

温度を記録するスクリプト

私はRaspberry Piの温度を記録するためにBASHスクリプトを書こうとしました。私の計画は15分ごとにcrontabで実行することです。しかし、引き続きエラーが発生します。文字列の連結に関連しているようです。 DATE1;TEMP1 DATE2;TEMP2 など (csv) が必要です。

私のコードは次のとおりです。

 #!/bin/bash
vcgencmd measure_temp > /tmp/temp.txt
TEMP= grep -o [1-9][0-9]\.[0-9] /tmp/temp.txt
DATE= date +%Y-%m-%d\ %H:%M
STR="$DATE"
echo $STR
STR+=";"
echo $STR
STR+="$TEMP"
echo $STR
echo $STR >> /home/pi/temp_hist.csv

すべてのエコーは、何が起こっているのかを理解しようとするだけです。

このスクリプトを修正する方法とより良い方法についてのアドバイスをいただきありがとうございます!

私はもともとこれをRaspberry Pi Stack Exchangeに投稿しました。温度を記録するスクリプト- しかし、ここに入れなければならないと聞きました。

ベストアンサー1

最初の問題は、次の後にスペースがあることです=

TEMP= grep -o [1-9][0-9]\.[0-9] /tmp/temp.txt

これは間違っており、スクリプトが破損する可能性があります。次の問題は、コマンド自体を出力ではなく変数に文字列として割り当てることです。

$ foo=date
$ echo $foo
date

コマンドを実行してその出力を変数に保存するには、$(command)または次を使用する必要があります`command`

$ foo=$(date)
$ echo $foo
Mon May 25 19:09:11 EEST 2015

他にも改善できるさまざまな領域があります。この試み:

#!/usr/bin/env bash
vcgencmd measure_temp > /tmp/temp.txt
## Avoid using UPPER CASE variable names since they
## can conflict with environmental variables. 
temp=$(grep -o "[1-9][0-9]\.[0-9]" /tmp/temp.txt)
date=$(date +"%Y-%m-%d %H:%M")
## No need for another variable
printf "%s;%s\n" "$date" "$temp" >> /home/pi/temp_hist.csv

おすすめ記事