bash 数组中已安装软件包的 Debian 输出

Debian output from installed packages in bash array

抱歉可能是一个菜鸟问题,但我是 Linux 的新手。我正在尝试从数组中的以下命令获取所有输出并循环遍历它(在 bash 中)。

packages=$(dpkg-query --show --showformat='${Package}' )

for p in "${packages[@]}"; do
        echo "Package: ${p}"
done

我不知道我做错了什么,但也许有人可以帮助我。

提前致谢。

问候MC

感谢您的帮助。我现在的解决方案是:

while IFS= read  -r line; do
        echo "${line}"
done <<< "$(dpkg-query --show --showformat='${Package}\n')"

很多事情。

第一个

packages=$(dpkg-query --show --showformat='${Package};'

不创建数组。

它创建一个字符串。您需要 () 围绕命令将其拆分为一个数组。

第二个:

即使您在那里使用数组,您也不会希望这样做。

有关从 file/command/etc 读取数据的适当方法,请参阅 Bash FAQ 001。逐行.