我想将命令输出保存到bash脚本中的变量中。我已经尝试过在这个论坛中找到的可能性,但它对我的脚本不起作用。
我使用命令cangen vcan0 -g 4 -I 7E -L 8 -D r -v
生成CAN数据。 -g,-I,-L,-D,-V是定义如何生成CAN数据的参数。
通常我会在终端上打印数据:
我想将此输出存储在变量中:
#!/bin/bash
#We have to generate a virtual CAN bus Interface
sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0
candata= `(cangen vcan0 -g 0.008 -I 7E -L 8 -D r -v)`
echo $candata
当我运行我的脚本时,我没有从我的cangen命令获得输出。我得到了输出:
RTNETLINK answers: File exists
我对Linux和bash脚本编程没有多少经验。有人能帮助我吗?
答案 0 :(得分:1)
我认为你的脚本有效,这条消息是$ candata的内容,以及vcan0设备已经存在的原因。 (你有几次尝试过吗?)
无论如何我建议写:
candata=$(cangen vcan0 -g 0.008 -I 7E -L 8 -D r -v)
或
candata=`cangen vcan0 -g 0.008 -I 7E -L 8 -D r -v`
正如你所写的那样,你打开一个子壳,它会增加复杂性。