echo -n使用管道功能失败

时间:2019-02-07 23:49:00

标签: bash unix echo raspberry-pi3 raspberry-pi2

我有点菜鸟,所以请忍受我

我有一个非常基本的脚本来检查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是问题,因为如果删除脚本,脚本可以正常运行,但是它不能为我做数学运算。 =(

任何帮助表示感谢,谢谢。

1 个答案:

答案 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