В настоящее время я пишу установщик для своей компании, чтобы мы могли легко создавать новые машины. Одна из них - это серия модулей CPAN, которые устанавливаются через отдельные команды perl -MCPAN -e 'install "Module::Name"'
. Я создал массив модулей (около 200), который устанавливается через цикл foreach в сценарии bash. Однако теперь я хочу проверить статус выхода установки модуля перед запуском нового, возможно ли это? Вот что я пытался до сих пор:Как проверить статус возвращаемого значения/выхода perl -MCPAN -e?
for i in "${CPANmodules[@]}"
do
echo -e "\033[1;32mInstalling CPAN module $i \033[0m"
perl -MCPAN -e "install \"$i\""
if [ $? -ne 0 ]
then
echo "Error installing module $i"
fi
done
Я также попытался следующие, но безуспешно:
perl -MCPAN -e 'install "Madeup::Modulename"'
perl -e 'print $?'
Однако это всегда возвращает 0, даже если модуль даже не существует.
Любая помощь будет оценена по достоинству.
Просто догадайтесь: можете ли вы установить 'Makeup :: Modulename 'или выйти 1''? –
Отличное предложение, однако, ничего не меняет. – Bifrost
Быстрый тест здесь с предложением от @TomFenech работал на моей машине CentOS 5 (после того, как я прошел через настройку CPAN, поскольку раньше не использовал ее на этой машине). –