Как уже упоминал Андрей, вы должны иметь возможность использовать команду lpstat для этого. В частности, попробуйте разобрать вывод:
lpstat -p
В обычных условиях вы получите что-то вроде:
printer HP_DESKJET_940C is idle. enabled since Mon 09 Aug 2010 10:42:20 PM CDT
printer HP_LaserJet_1012 is idle. enabled since Mon 09 Aug 2010 10:36:26 PM CDT
Если с одним из принтеров что-то не так, текст «ожидания» изменится. Я рекомендую поэкспериментировать с состояниями ваших виртуальных принтеров, пока вы не получите желаемый результат. Возможно, для вашего bash-скрипта вам нужно что-то вроде этого:
lpstat -p | grep -E 'HP_DESKJET.*\(idle|printing\)' >/dev/null || false
Эта последовательность команд проверяет, находится ли ваш принтер в состоянии ожидания или печати, и если это не так, то он выдаст код выхода 1. В противном случае он выдаст код выхода 0. Конечно, вам нужно настроить имя вашего принтера и доступные состояния в соответствии с потребностями вашего проекта.