쉘 스크립트에서 배열 반복

쉘 스크립트에서 배열 반복

배열에서 패키지 목록을 읽고 해당 RPM이 설치되어 있는지 알려주는 코드를 작성하고 싶습니다.

ARRAY=(
pkg-config
python
python-devel
python-libs
readline
renderproto
sqlite
tcl
tk
zlib
)

for i in `echo  ${ARRAY[@]}`
do
    rpm -q $i
done

이 코드는 제대로 작동하지 않습니다. 출력이 ok rpm named foobar is installed또는 가 되기를 원합니다 rpm named foobar is not installed.

어떻게 해야 하나요?

답변1

이 명령은 rpm쿼리된 패키지의 설치 여부에 따라 종료 상태가 변경되는 것으로 보이므로 다음과 같은 방법으로 사용할 수 있습니다 if.

for package in "${ARRAY[@]}"; do
    if rpm -q $package >/dev/null 2>/dev/null; then
       echo "Package $package is installed."
    else
       echo "Package $package is not installed."
    fi
done

관련 정보