Почему мой скрипт не работает, когда я запускаю его из Perl? - PullRequest
0 голосов
/ 24 сентября 2010

У меня есть команда, которую я загружаю (example.sh), которая хорошо работает в командной строке unix.

Однако, если я выполню его в Perl с использованием синтаксиса system или `, это не сработает. Я предполагаю, что некоторые параметры, такие как переменные окружения и другие внешние sh-файлы, не были загружены.

Существует ли пример кодирования, обеспечивающий его работу?

Больше обновлений при сбое выполнения кода (я пробовал с разными кодами):

push (@JOBSTORUN, "cd $a/$b/$c/$d; loadproject cats; sleep 60;");      
...
my $pm = new Parallel::ForkManager(3);

foreach my $job (@JOBSTORUN) {
    $pm->start and next;
    print(`$job`); 
    $pm->finish;
}

print "\n\n[DONE] FINISHED EXECUTING JOBS\n";

Выходные сообщения:

sh: loadproject: command not found

1 Ответ

5 голосов
/ 24 сентября 2010

Можете ли вы показать нам, что вы пробовали до сих пор? Как у вас работает эта программа?

Моим первым подозрением не было бы окружение, если вы запускаете его из оболочки входа в систему. любой скрипт Perl, который вы запускаете (ну, на самом деле, любая программа) наследует ту же среду. Однако, если вы запускаете программу через cron, это уже другая история.

Другая ошибка, которую я обычно допускаю в этих ситуациях, - это неверное указание относительных путей. Пути в порядке из командной строки, но мой Perl-скрипт имеет другой текущий рабочий каталог.

Для получения общих рекомендаций см. Взаимодействие с системой, когда Perl недостаточно . Об этом также есть глава в Изучение Perl .

Это лучший совет, на который вы можете надеяться, учитывая очень ограниченную информацию, которой вы поделились с нами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...