TRUE=0
FALSE=1# Процедуре передается список пакетов в качестве первого аргумента,
# и если хотя бы один пакет не установлен, то процедура вернет FALSE.
function PkgIsInstalled
{
pkg_list=$(dpkg-query --showformat '${Package} ${Status}\n' -W $1 | \
grep 'ok installed$' | sed -n -e 's/ .* ok installed$//p')
for pkg_name in $1
do
echo "$pkg_list" | grep -q "^$pkg_name\$"
if [ $? -ne $TRUE ]; then
return $FALSE;
fi
done
return $TRUE
}
# Использование...
pkg_name="здесь_имя_пакета"
PkgIsInstalled $pkg_name
if [ $? -ne $TRUE ]; then
echo "Package \"$pkg_name\" is not installed!"
read -p "Install now? [yes]/[no] " cmd
if [ "$cmd" = "yes" ] || [ "$cmd" = "y" ]; then
sudo aptitude update
sudo aptitude install $pkg_name
return $?
fi
fi