我有一个python脚本,输出如下:
$ sudo ./demo.py --backend bluepy poll C4:7C:8D:xx:xx:xx
Getting data from Mi Flora
FW: 3.1.8
Name: Flower care
Temperature: 17.4
Moisture: 39
Light: 138
Conductivity: 513
Battery: 99
我想在bash脚本中使用这些输出行作为bash变量:
FW (=3.1.8), NAME (="Flower care"), TEMPERATURE (=17.4), MOISTURE (=39), LIGHT (=138), CONDUCTIVITY (=513), BATTERY (=99)
任何想法如何做到这一点?
答案 0 :(得分:1)
在循环中读取输出并使用case
语句分配变量。
while read -r prefix val; do
case "$prefix" in
FW:) fw=$val ;;
Name:) name=$val ;;
...
esac
done < <(sudo ./demo.py --backend bluepy poll C4:7C:8D:xx:xx:xx)
仅供参考,您不应使用大写变量名称,这些名称通常是为环境变量保留的。
答案 1 :(得分:1)
IIUC,您可以像这样设置所有变量:
$ eval $(sudo ./demo.py --backend bluepy poll C4:7C:8D:xx:xx:xx | tail +2 | awk '{$1=tolower($1);print}' | sed 's,: ,=,' | sed 's,=,=",' | sed 's,$,",')
$ echo $fw
3.1.8
$ echo $name
Flower care
$ echo $temperature
17.4
$ echo $moisture
39
$ echo $conductivity
513
$ echo $battery
99