if 문의 grep 변수

if 문의 grep 변수

어쩌면 내가 잘못 생각하고 있을 수도 있으므로 제안을 받아들일 준비가 되어 있습니다. 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

관련 정보