首先对这个基本问题感到抱歉。但是我不是程序员,需要一些帮助。
我有一个命令可以给我传感器的温度。
例子:
root@machine:~ $ snmpwalk 172.69.4.25 -v 2c -c rocommunity .1.3.6.1.3.1.1.4
iso.3.6.1.3.1.1.4.1.2.5.116.101.109.112.49.1 = STRING: "31625"
还有一个小的基本bashscript,只给我字符串的值。
#!/bin/bash
SLAVE="/sys/devices/w1_bus_master1/28-80000007e290/w1_slave"
OUTPUT=$(/bin/cat $SLAVE | /usr/bin/awk -F 't=' ' { printf $2 } ')
echo $OUTPUT
w1_slave文件如下
25 01 55 00 7f ff 0c 0c 08 : crc=08 YES
25 01 55 00 7f ff 0c 0c 08 t=31625
但这是一个温度,我需要用/ 1000除法的值。31625确实是31.625的降级。
如果我放
#!/bin/bash
SLAVE="/sys/devices/w1_bus_master1/28-80000007e290/w1_slave"
OUTPUT=$(/bin/cat $SLAVE | /usr/bin/awk -F 't=' ' { printf $2 / 1000 } ')
echo $OUTPUT
给我吗
root@machine:~ $ /opt/scripts/gettemp.sh
031.625
结果是031.625,但我不知道为什么不只放31.625并删除前0,
我做错什么了吗?有人可以帮我吗?
致以最诚挚的问候
如果问题是awk格式,请尝试以下操作:
#!/bin/bash
SLAVE="/sys/devices/w1_bus_master1/28-80000007e290/w1_slave"
OUTPUT=$(/bin/cat $SLAVE | grep -o "t=.*" | /usr/bin/awk -F 't=' ' { printf "%.3f",$2 / 1000 } ')
echo $OUTPUT
无论如何,正如@Ed Morton所说,默认情况下,awk默认情况下不会填充零。需要/ sys / devices / w1_bus_master1 / 28-80000007e290 / w1_slave文件的样本输出来阐明问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句