シェルスクリプトで配列を繰り返す

シェルスクリプトで配列を繰り返す

配列からパッケージのリストを読み、その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

関連情報