linux - Bash - 获取命令的输出

标签 linux bash shell

无论我做什么,似乎都无法将命令的输出分配给 bash 中的变量。虽然我的脚本运行 find 没有任何错误,但我没有得到我想要的结果:

# Prompt if the user needs Qt
echo ""
echo "Checking for qt5-default."
echo ""

OUTPUT="$(sudo dpkg -s qt5-default)"

echo "OUTPUT:"
echo $OUTPUT

...

OUTPUT 永远不会回应任何东西。但是,如果我这样做:

OUTPUT="$(ls -la)"

然后就可以了。我想知道为什么。


我的意思是:

Failure

如您所见,“OUTPUT:”字符串出现在命令输出之后,这意味着输出没有存储在变量中,而是在主 shell 中运行,这让我感到困惑。

这是 OUTPUT="$(ls -la)" 时发生的情况:

Success

在这种情况下,“OUTPUT:”出现在前面,表明 echo 命令正常工作。

有什么想法吗?

最佳答案

OUTPUT=$( dpkg -s qt5-default 2>&1 )

应该做你想做的事。正如 Etan 指出的那样,dpkg 的输出转到 stderr,而不是 stdout。

关于linux - Bash - 获取命令的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28422206/

相关文章:

shell - shell ksh函数参数包含另一个要调用的函数名称

mysql - 如何使用脚本shell执行mysql命令

linux - 服务器加载时间问题

linux - 连接两个特定USB设备时运行linux程序

linux - Xfces 用户定义的操作在控制台中工作时不起作用

bash - 在环境变量中捕获 curl header 和响应

bash - 应为条件二元运算符 : syntax error near `$1'

linux - 在 debian 的同一接口(interface)上具有不同网络路由的多个 ip 地址

linux - NGINX:允许多个端口可用于 https + 将所有 http 重定向到 https

linux - bash 别名中允许使用哪些字符