Я не думаю, что есть идеальный способ делать то, что вы хотите. Как говорит Мартин, вы можете проверить, установлен ли исполняемый бит, но это не подтвердит, что он действительно будет работать.
Вы можете попробовать запустить программу и вместо того, чтобы искать конкретный текст в самой программе, посмотрите на переменную $?
. Это возвращает статус выхода программы (обычно 0 для OK) или (в системе CentoOS я должен передать) 127 для файла, который не найден, например
find --version
if [[ $? == 127 ]]
then
exit 1
fi
Причина, по которой не существует идеального способа, заключается в том, что статус выхода 0 для OK является обычным, и программы могут возвращать другой статус выхода, если они запускаются, но обнаруживают ошибку. Это может сработать для вас, пока что-то не запустится и не вернет статус выхода 127, указывающий на некоторую ошибку.