echo -n не работает с функцией piped - PullRequest
0 голосов
/ 08 февраля 2019

Я немного новичок, так что терпите меня:

У меня есть довольно простой скрипт для проверки температуры процессора в rpi, и мне нужен вывод в одну строку в качестве требования дляотправка сообщений в службу обмена сообщениями с помощью webhook.Вывод должен выглядеть примерно так: «54,0 ° C, 129,2 ° F».Я знаю переключение на добавление к существующей строке с помощью echo, -n, но поскольку я передаю преобразование по Фаренгейту в bash calc (BC), я получаю синтаксическую ошибку, если пытаюсь начать эту строку с «echo -n и т. Д.»

Я также понимаю, что мне не нужно печатать ° 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

Итак, вопрос в этом;Как получить ° F на той же строке, что и формула преобразования, не используя функцию | bc?Я уверен, что проблема заключается в | bc, так как сценарий работает нормально, если я его удалю, но он не поможет мне.= (

Любая помощь приветствуется, спасибо.

1 Ответ

0 голосов
/ 08 февраля 2019

Как вы обнаружили, 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
...