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

时间:2016-03-17 21:59:26

标签: arrays linux bash debian dpkg

很抱歉也许是一个noob问题,但我对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')"

1 个答案:

答案 0 :(得分:1)

很多事情。

第一

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

不会创建数组。

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

第二

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

有关从文件/命令/等中读取数据的适当方法,请参阅Bash FAQ 001。线由行。