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