#!/bin/sh die() { if [ "$*" ]; then echo "$*" 1>&2 fi exit 2 } TARGET=$1 case "$TARGET" in -*|'') cat < Checks the Slackware package database in /var/log/packages and returns true (0) if is installed, false (1) otherwise. If there's an error, the return status will be 2, which is still false, but the caller can check for this by examining the \$? variable. If standard output is a terminal, the full installed package name (package-version-arch-build_tag) will be printed to stdout, or "no package" if no such package is installed. Like Slackware's installpkg, $0 respects the environment variable ROOT, to operate on a mounted partition other than /. EOF ;; esac if [ "$2" != "" ]; then die "Usage: $0 " fi cd $ROOT/var/log/packages || die "Are you sure this is Slackware?" for i in ${TARGET}-*; do j=$(echo $i | rev | cut -d- -f4- | rev) if [ "$TARGET" = "$j" ]; then [ -t 1 ] && echo $i exit 0 fi done [ -t 1 ] && echo "no package '$TARGET' installed" exit 1