我有点菜鸟,所以请忍受我
我有一个非常基本的脚本来检查rpi的cpu温度,并且我需要将输出显示在一行上,以作为通过Webhook向Messenger服务报告的要求。输出应类似于“ 54.0°C,129.2°F”。我知道用echo -n附加到现有行的开关,但是因为我正在将华氏转换转换为bash calc(BC),所以如果我尝试以“ echo -n etc”开始该行,则会出现语法错误。
我也意识到我并不需要打印°C和°F,但是我需要奢侈!
这是我的脚本(如果我不尝试将其全部都填入同一行的话,效果很好):
#!/bin/bash
(
cpuTemp0=$(cat /sys/class/thermal/thermal_zone0/temp)
cpuTemp1=$(($cpuTemp0/1000))
cpuTemp2=$((cpuTemp0/100))
cpuTempM=$(($cpuTemp2 % cpuTemp1))
#date
#echo cpu temp in °C and °F
echo -n $cpuTemp1"."$cpuTempM
echo -n "°C,"
echo -n "$cpuTemp1 * 1.8 + 32"|bc
echo "°F"
) > /home/pi/bin/tlog
我收到的错误是:
(standard_in) 1: syntax error
问题是这个;如何在不破坏| bc函数的情况下与转换公式在同一行获得°F?我很肯定| bc是问题,因为如果删除脚本,脚本可以正常运行,但是它不能为我做数学运算。 =(
任何帮助表示感谢,谢谢。
答案 0 :(得分:1)
如您所发现,bc
要求正确终止的行。那我们为什么不给它一个呢?
我们可以重新排列您的代码,以便首先进行所有计算,然后最后进行一次回显:
#!/bin/bash
cpuTemp0=$(cat /sys/class/thermal/thermal_zone0/temp)
cpuTemp1=$(($cpuTemp0/1000))
cpuTemp2=$((cpuTemp0/100))
cpuTempM=$(($cpuTemp2 % cpuTemp1))
tempF=$(echo "$cpuTemp1 * 1.8 + 32"|bc)
echo -n "${cpuTemp1}.${cpuTempM}°C,${tempF}°F" > /home/pi/bin/tlog