簡単な要件があります。シェルスクリプト経由でインストールしたい任意の数のパッケージに対応するいくつかの変数を定義したい。
以下のサンプルコード:
MISC="shutter pidgin"
WEB="apache2 mongodb"
for pkg in $MISC $WEB; do
if [ "dpkg-query -W $pkg | awk {'print $1'} = """ ]; then
echo -e "$pkg is already installed"
else
apt-get -qq install $pkg
echo "Successfully installed $pkg"
fi
done
すべてうまくいきますが、必要なパッケージを確実にインストールできないため、ロジックに欠陥があるようです。既にインストールされているというか、以前にインストールされたパッケージをインストールしようとしています。
またcommand -v
、次のことを試しています:
if [ "dpkg -l | awk {'print $2'} | grep --regexp=^$pkg$ != """ ]; then
そして、返された文字列が空であったかどうかをチェックするためのフラグ-n
と-z
フラグもあります。ここでいくつかの良い感覚を逃しているのは確かです。
パッケージが実際にインストールされているかどうかを確認するために私ができることはありますか?
ありがとう!
apt-get install
インストール済みのパッケージを要求した場合、どんな害がありますか?あなただけを呼び出すことができますapt-get install $MISC $WEB
。