无论我做什么,似乎都无法将命令的输出分配给 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)"
然后就可以了。我想知道为什么。
我的意思是:
如您所见,“OUTPUT:”字符串出现在命令输出之后,这意味着输出没有存储在变量中,而是在主 shell 中运行,这让我感到困惑。
这是 OUTPUT="$(ls -la)"
时发生的情况:
在这种情况下,“OUTPUT:”出现在前面,表明 echo
命令正常工作。
有什么想法吗?
最佳答案
OUTPUT=$( dpkg -s qt5-default 2>&1 )
应该做你想做的事。正如 Etan 指出的那样,dpkg 的输出转到 stderr,而不是 stdout。
关于linux - Bash - 获取命令的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28422206/