echo -n 因管道函数而失败

echo -n fails with piped function

我有点菜鸟,所以请耐心等待:

我有一个非常基本的脚本来检查 cpu rpi 的温度,我需要在一行中输出作为使用 webhook 向信使服务报告的要求。输出应该类似于“54.0°C,129.2°F”。我知道用 echo,-n 附加到现有行的开关,但是因为我正在将华氏度转换管道传输到 bash calc (BC) 如果我尝试用 [=26 开始该行,我会收到语法错误=]

我也意识到我真的不需要打印°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 是问题所在,因为如果我删除它脚本运行良好,但它不会为我做数学运算。 =(

感谢任何帮助,谢谢。

如您所见,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