【问题标题】:How to store/save the output from a command in Bash? [duplicate]如何在 Bash 中存储/保存命令的输出? [复制]
【发布时间】:2016-08-11 10:54:41
【问题描述】:

我想将命令输出保存到 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-command 获得输出。我得到输出:

RTNETLINK answers: File exists

我在 Linux 和 bash 脚本编程方面没有太多经验。有人可以帮我吗?

【问题讨论】:

  • 错误消息似乎与您所询问的构造无关。您的变量已经包含程序 cangen 的输出(尽管括号是多余的),但错误消息可能意味着输出为空。

标签: linux bash variables command


【解决方案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`

正如您编写的那样,您打开了一个子shell,它毫无意义地增加了复杂性。

【讨论】:

  • 感谢您的回答。我已经尝试了几次,我得到了同样的信息。如果我的脚本可以工作,我应该能够看到数据。我已经尝试过您的建议,但我总是收到相同的信息
  • 我同意 Tripleee 上面的评论。我仍然相信脚本(就 bash 而言)是正确的,问题出在其他地方。
  • 问题出在命令:sudo ip link add dev vcan0 type vcan 这个命令只能运行一次。
猜你喜欢
  • 2014-10-21
  • 2023-03-09
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
  • 2021-06-12
  • 1970-01-01
  • 1970-01-01
  • 2019-10-07
相关资源
最近更新 更多