我想用Munin来展示我的数据浪潮。我从ttyACM0获取数据,它是一个Arduino UNO。我使用shell脚本。但是我遇到了问题,我不能'cat / dev / ttyACM0'来获取数据。 这是问题,程序停在'cat / dev / ttyACM0',
+ . /usr/share/munin/plugins/plugin.sh
+ '[' '' = autoconf ']'
+ '[' '' = config ']'
++ cat /dev/ttyACM0
有时会出现另一个问题,就是找不到'LINE = $(cat / dev / ttyACM0 | awk -F:'{print $ 2}')'命令。有人有想法吗?非常感谢。
这是我的代码的一部分,
if [ "$1" = "config" ]; then
echo 'graph_title Temperature of board'
echo 'graph_args --base 1000 -l 0'
echo 'graph_vlabel temperature(°C)'
echo 'graph_category temperature'
echo 'graph_scale no'
echo 'graph_period second'
echo 'graph_info This graph shows the temperature of board'
LINE = $(cat /dev/ttyACM0 | awk -F: '{print $2}')
for i in 0 1 2 3 4; do
case $i in
1)
TYPE="Under PCB"
;;
2)
TYPE="HDD"
;;
3)
TYPE="PHY"
;;
4)
TYPE="CPU"
;;
5)
TYPE="Ambience"
;;
esac
name=$(clean_name $TYPE)
if ["$TYPE" != "NA"]; then
echo "temp_$name.label $TYPE";
fi
done
exit 0
fi
LINE = $(cat /dev/ttyACM0 | awk -F: '{print $2}')
for i in 0 1 2 3 4; do
case $i in
1)
TYPE="Under PCB"
VALUE=$(echo "$LINE" | awk '{print $1}')
;;
2)
TYPE="HDD"
VALUE=$(echo "$LINE" | awk '{print $2}')
;;
3)
TYPE="PHY"
VALUE=$(echo "$LINE" | awk '{print $3}')
;;
4)
TYPE="CPU"
VALUE=$(echo "$LINE" | awk '{print $4}')
;;
5)
TYPE="Ambience"
VALUE=$(echo "$LINE" | awk '{print $5}')
;;
esac
name=$(clean_name $TYPE)
if ["$TYPE" != "NA"]; then
echo "temp_$name.value $VALUE";
fi
done
答案 0 :(得分:2)
删除=
符号两侧的空格。它们不允许进行变量赋值。
将其更改为:
LINE=$(cat /dev/ttyACM0 | awk -F: '{print $2}')
答案 1 :(得分:2)
LINE错误的问题是'='字符周围有空格。它必须是LINE=...
。
如果/dev/ttyACM0
是一个不指示EOF的设备,那么它将等待更多阅读,awk
将等待永远不会出现的EOF。你期望/dev/ttyACM0
到底产生什么?如果在控制台上键入cat /dev/ttyACM0
会发生什么?
进一步注意猫的无用。更好地使用
LINE=$(awk -F: '{print $2}' /dev/ttyACM0)
您必须在if ["$TYPE" != "NA"]; then
中添加空格,使其显示为
if [ "$TYPE" != "NA" ]; then