代码之家  ›  专栏  ›  技术社区  ›  tygo

命令输出未保存到bash中的变量

  •  0
  • tygo  · 技术社区  · 2 年前

    我需要保存的输出 apt-cache show debconf-2.0 到一个变量,但无论我如何尝试,该变量都保持为空。 debconf-2.0 是一个虚拟包,当在终端中运行它时,它返回:

    N: Can't select versions from package 'debconf-2.0' as it is purely virtual
    N: No packages found
    

    我需要在脚本中获得命令输出,以查看包是否是虚拟的 grep -检查输出是否包含“纯虚拟”。

    我以正常的方式尝试:

    cmd_output=$(apt-cache show debconf-2.0)
    echo "$cmd_output"
    

    但这不会产生任何结果。然后我尝试用获取stderr输出 2>&1 :

    cmd_output=$(apt-cache show debconf-2.0 2>&1)
    echo "$cmd_output"
    

    其仍然不输出任何内容。另一个了解包是否是虚拟的命令也会有所帮助。

    为了确认一个非虚拟包会向变量返回一些东西,我用一个正常的包尝试了一下,它输出的信息很好。

    cmd_output=$(apt-cache show nano 2>&1)
    echo "$cmd_output"
    

    其返回:

    Package: nano
    Version: 7.2-1
    Installed-Size: 2804
    Maintainer: Jordi Mallace
    ...
    
    1 回复  |  直到 2 年前
        1
  •  -1
  •   Cyrus    2 年前

    我建议:

    cmd_output=$(apt-cache -q=0 show debconf-2.0 2>&1)
    echo "$cmd_output"
    

    输出:

    N: Can't select versions from package 'debconf-2.0' as it is purely virtual
    N: No packages found
    

    请参阅: https://unix.stackexchange.com/a/617079/74329