【问题标题】:save an output of a command in a variable in Bash scripting [duplicate]将命令的输出保存在 Bash 脚本中的变量中 [重复]
【发布时间】:2021-06-12 00:03:07
【问题描述】:

我是 bash 脚本的初学者,我正在尝试执行以下操作:

ads2 version 命令返回以下信息:

如您所见,命令ads2 version 打印出多个信息。

1-但是,我只想获取版本号以便打印并保存它而不是显示所有内容

2- 此外,如果 ads2 被激活,DDA 会显示,如图所示,DDA 有一个未知数,这意味着它没有被激活。那么如何在 if 语句中对此进行评估!

【问题讨论】:

    标签: linux bash shell variables output


    【解决方案1】:

    您可以将ads2 version 的输出传送到grep,然后传送到cut 以提取与版本号对应的字段:

    $ version="$(ads2 version | grep 'ADS2 version' | cut -d' ' -f 3)"
    

    或者更好地使用awk

    $ version="$(ads2 version | awk '/ADS2 version/{print $3}')"
    

    然后版本将存储在version shell 变量中:

    $ echo $version
    4.8.10
    

    至于您编辑的后续问题,您可以这样做:

    if [ "$(ads2 version | grep DDA | grep '(unknown)')" ]; then
        echo "Not activated"
    else
        echo "Activated"
    fi
    

    也就是说,您将自己限制在包含文本 DDA 的行中,然后检查该行是否包含文本 (unknown)。如果是这样,它没有被激活;否则,就是这样。

    【讨论】:

    • 非常感谢。当我更新我的问题时,您能否扩展您的答案:)!
    • @k.jbaili 我已经相应地扩展了我的答案。我希望它有所帮助。
    • @k.jbaili 对我来说,./verifyAds: line 75: check: command not found 听起来好像您的环境中缺少某些东西。首先尝试在 bash 脚本中运行 ads2 version 并检查它是否有效。
    • @k.jbaili 然后,作为第二步,在 bash 脚本中只运行 ads2 version | grep 'ADS2 version'
    【解决方案2】:

    你可以使用 os 命令和正则表达式从输出中得到你想要的:

    process = os.popen('ads2 version')
    output = process.read()
    res = re.findall(r"ADS2 version: (.*)", output.decode())
    

    如果您可以添加“广告版本”输出,我可以给您更详细的答案。

    【讨论】:

    • 感谢您的回答。执行 ads2 版本的输出如上图所示
    • 我想复制粘贴而不是从图片中输入。
    猜你喜欢
    • 2021-12-03
    • 2012-04-03
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多