也许我的处理方式是错误的,所以我愿意接受建议。我试图避免将 INSTALLED_LIST 的输出添加到文件中。我希望在变量中使用它。
基本上,我想检查系统上是否安装了软件包列表(INSTALLATION_PACKAGES)。如果没有,记录哪些安装失败,记录信息,然后退出。在 if 语句之外,这工作正常(请参阅注释掉的行),我只是在 if 语句中实现它时遇到问题。
提前感谢您的帮助。
INSTALLED_LIST=`dpkg --list`
for i in $INSTALLTION_PACKAGES; do
apt-get -y install $i
# echo "$INSTALLED_LIST" | grep -ie "^ii $i "
if ! echo "$INSTALLED_LIST" | grep -ie "^ii $i " ; then
echo $i >> $FAILED_INSTALL
fi
done
答案1
如果您想要$INSTALLATION_PACKAGES
安装所有软件包,apt-get install
则只需安装所有软件包即可然后检查其中是否有任何失败:
apt-get -y $INSTALLATION_PACKAGES
list=$(dpkg -l | grep ^ii)
for i in $INSTALLATION_PACKAGES do
echo "$list" | grep -w "$i" || echo "$i" >> $FAILED_INSTALL
done