很抱歉也许是一个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')"
答案 0 :(得分:1)
很多事情。
第一
packages=$(dpkg-query --show --showformat='${Package};'
不会创建数组。
它会创建一个字符串。您需要在命令周围()
将其拆分为数组。
第二
即使你在那里使用数组,你也不希望这样做。
有关从文件/命令/等中读取数据的适当方法,请参阅Bash FAQ 001。线由行。