grep if 语句中的变量

grep if 语句中的变量

也许我的处理方式是错误的,所以我愿意接受建议。我试图避免将 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

相关内容