【发布时间】:2021-04-04 08:25:38
【问题描述】:
相当简单的脚本,但我卡住了。
它连接到一个电池平衡器,将信息输出到一个 json 格式的文件中。然后我有一个管道输出到 jq 以获得我需要的信息。 它在 bash shell 中有效,但在脚本中无效:
这是脚本:
echo "Checking battery voltages"
jkbms -p 3C:A5:19:7B:28:09 -o json > /home/bms/batt.log
echo cat /home/bms/batt.log | jq -r '.highest_cell_voltage'
echo "done"
cat 行在脚本输出中显示了这一点:
Checking battery voltages
parse error: Invalid numeric literal at line 1, column 4
done
在 shell 中它按预期工作:
cat /home/bms/batt.log | jq -r '.highest_cell_voltage'
4.152044773101807
我试过用引号等将整个 cat 命令括起来,但我不知所措。
编辑:
但是,这有效:
echo "Checking battery voltages"
jkbms -p 3C:A5:19:7B:28:09 -o json > /home/bms/batt.log
batt=$(cat /home/bms/batt.log)
echo $batt | jq -r '.highest_cell_voltage'
#echo /usr/bin/cat /home/bms/batt.log
echo "done"
【问题讨论】: