Установка cpanm в скрипте bash

Я пишу скрипт, который устанавливает и настраивает Nagios в соответствии с моими требованиями. Требуется cpanm и несколько модулей perl.

Здесь используется функция step/try/next: /questions/43586656/effektivnaya-proverka-sostoyaniya-vyihoda-bash-dlya-neskolkih-komand/43586664#43586664

step "Downloading cpanm installer"
 try `wget -q http://cpanmin.us -O $swrepo/cpanm.install`
next

step "Installing cpanm"
  try echo '{ exec </dev/tty; cat $swrepo/cpanm.install | perl - App::cpanminus; }' | bash
  # try bash -c "$(cat $swrepo/cpanm.install | perl - App::cpanminus)"
  # try cat $swrepo/cpanm.install | perl - App::cpanminus
next

step "Installing Perl module Nagios Config"
  try `cpanm Nagios::Config`
next

Мои проблемы здесь:

  1. Какой бы способ я не пытался запустить установку для cpanminus, он не работает со сценарием и не будет установлен должным образом. Я не могу заставить его работать за пределами функций step/try/next (не так, как я хочу).

  2. Команда cpanm тоже не работает. Если я изолирую и запуском только этой части скрипта, он все равно завершится с ошибкой "команда cpanm не найдена". Я могу запустить его вручную в командной строке.

Любые указатели для слегка разочарованы?

Обновить

Я вытащил установку cpanm в отдельный файл: шаг "Установка cpanm", попробуйте sh conf_cpanm.sh далее

Что работает, и я, вероятно, постараюсь вернуть его позже, но пока это работает. Так может и остаться.

Однако сделать то же самое для try cpanm Nagios::Config не получится. Файл выглядит так:

#!/bin/bash
cpanm Nagios::Config

... и если я запущу это, позвонив sh conf_nagcpanm.sh это работает отлично.

1 ответ

Я думаю, используя backticks

try `cpanm Nagios::Config`

это ошибка bash примет выражение в обратных галочках, выполнит его и заменит выходные данные команды на выражение. Выход из cpanm не будет командами оболочки, так что это не будет работать. Должно быть просто

try cpanm Nagios::Config
Другие вопросы по тегам