dpkg-query как и в вашем связанном посте, кажется наиболее правильным инструментом для работы, за исключением использования, например, доступных библиотек Python для непосредственного связывания с системой APT в таком контексте сценариев.
С помощью dpkg-query:
dpkg-query -Wf'${db:Status-abbrev}' package-name 2>/dev/null | grep -q '^i'
Возвращает истину (выход из состояния 0 в сценарии оболочки), если пакет установлен, ложь (выход из состояния 1) в противном случае.
-W означает "Показать" (dpkg-query должен иметь запрошенное действие). 
-f изменяет формат вывода. 
db:Status-abbrev - это краткая форма статуса пакета. 
2>/dev/null отключает dpkg-query если указано неверное имя пакета. Как это должно быть сделано, может быть вопросом от случая к случаю. 
grep -q возвращает true, если есть совпадение, иначе false. 
Если это используется часто, это может быть сделано простой функцией:
#!/bin/sh
debInst() {
    dpkg-query -Wf'${db:Status-abbrev}' "$1" 2>/dev/null | grep -q '^i'
}
if debInst "$1"; then
    printf 'Why yes, the package %s _is_ installed!\n' "$1"
else
    printf 'I regret to inform you that the package %s is not currently installed.\n' "$1"
fi
или просто
#!/bin/sh
if dpkg-query -Wf'${db:Status-abbrev}' "$1" 2>/dev/null | grep -q '^i'; then
    printf 'Why yes, the package "%s" _is_ installed!\n' "$1"
else
    printf 'I regret to inform you that the package "%s" is not currently installed.\n' "$1"
fi