2015-05-15 3 views
-1

Я новичок в написании сценариев. У меня есть датчик температуры, который дает мне температуру, если я кот файл /sys/bus/w1/devices/28-000006c5772c/w1_slave. Выходной файл выглядит следующим образом:Bash Script division

83 01 4b 46 7f ff 0d 10 66 t=24187 

Как вы можете видеть температуру в t= 24187, который я должен разделить на 1000. Мой сценарий выглядит следующим образом:

#!/bin/bash 
date +%Y-%m-%d-%H-%M 
s= cat /sys/bus/w1/devices/28-000006c5772c/w1_slave | grep t= | cut -d "=" -f2 
x= 1000 
f= echo $(($s/$x)) | bc -l 
echo the actually temperature is $f 

Но это Дошен Не работайте. Когда я начинаю сценарий, я получаю этот выход здесь:

2015-05-04-08-51 (date is wrong NTP not configured^^) 
23687 
/home/pi/RAB.sh: line 5: 1000: command not found 
/home/pi/RAB.sh: line 6:/: syntax error: operand expected (error token is "/ ") 
+2

Запустите свой код через [spellcheck.net] (http://shellcheck.net). Вы не можете поместить пробел после '=' в задании – chepner

+1

У вас будет гораздо больше шансов получить ответы, если ваш вопрос будет читабельным. Стоит тратить время на стандартный английский (правильное написание, пунктуация и т. Д.). Stack Overflow Markdown также предоставляет ряд параметров форматирования, чтобы сделать сообщения еще более удобными для чтения. Я отредактировал ваш вопрос для вас, чтобы вы могли видеть, как его можно улучшить. –

+1

Дело со сценарием (особенно когда новое) заключается в том, что вам нужно протестировать команды в командной строке перед их написанием, поэтому в этом случае введите 'x = 1000', поэтому' echo $ x' может решить вашу проблему. но жить (делать) и учиться :) – hoss

ответ

1

Чтобы назначить вывод команды в переменную, вам нужно использовать кавычку или (предпочтительно) синтаксис $().

s=$(cat /sys/bus/w1/devices/28-000006c5772c/w1_slave | grep t= | cut -d "=" -f2) 

установит $ с до 24187

Это и удаление пробелы после знаков = как предложено chepner получите, что вы хотите.

+0

спасибо, что помогли мне много :). – Synced21

+0

Добро пожаловать, но реальный способ поблагодарить кого-то из stackexchange - это принять их ответ. Нажмите на метку слева. – rojomoke