提问人:tygo 提问时间:10/13/2023 最后编辑:tygo 更新时间:10/13/2023 访问量:60
命令输出不会保存到 bash 中的变量
Command output doesn't save to variable in bash
问:
我需要将 的输出保存到一个变量,但无论我怎么尝试,该变量仍然是空白的。 是一个虚拟包,当在终端中运行它时,它会返回: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
我需要在脚本中获取命令输出,以查看包是否是虚拟的,方法是通过-ing输出来查看它是否包含“is pure virtual”。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
...
请注意,这不是这个问题的重复。在问这个问题之前,我已经提到过我已经添加了 2>&1
以将 stderr 重定向到 stdout。询问后,我发现需要一个额外的 -q=0
参数。
答:
0赞
Cyrus
10/13/2023
#1
我建议:
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
评论
apt-cache no output
apt-cache no output
apt-cache