Я пытаюсь вызвать скрипт ksh из моего сценария PERL, но не могу этого сделать.системный вызов perl не вызывает скрипт ksh
Вот моя команда
$cmdString = “/path to script/lookupCal.ksh --service 2 -i /auto/dataprod/MSUkeyDates -f /auto/dataprod/HoursOfOpData --timezone America/New_York”
system($cmdString)
Все, что я делаю посылаю входной файл Msymbolukeys, чтобы получить выходной файл с их часами работы (которая будет находиться в HoursOfOpData после выполнения сценария КШ), который я прочитал позже в моем PERL-коде.
Когда я запускаю это из командной строки, он работает так, как ожидалось, но вызов из моего сценария PERL, похоже, не вызывает сценарий ksh.
Я пытался добавить некоторые отладочные
if(system($cmdTmpstr) != 0)
{
if ($? == -1) {
print "failed to execute: $!\n";
}
elsif ($? & 127) {
printf "child died with signal %d, %s coredump\n",
($? & 127), ($? & 128) ? 'with' : 'without';
}
else {
printf "child exited with value %d\n", $? >> 8;
}
}
Это выход я получаю из журналов
**child died with signal 11, without coredump**
Любые советы, чтобы исправить это?
Вы должны, по крайней мере, захватить и проверить статус команды (нулевой/ненулевой) в обычном ходе событий. Когда он запускается из команды 'system()', стандартный ввод команды будет стандартным входом Perl, а стандартный вывод команды будет стандартным выходом Perl. Какие перенаправления ввода/вывода вы используете в Perl-скрипте? Например, ваш скрипт 'lookupCal.ksh' корректно работает при запуске с помощью ввода/dev/null или вывода, отправленного на'/dev/null', например? Сигнал 11 обычно является SIGSEGV, нарушение сегментации; это проблема в скрипте. –
'$ cmdString =" ... ";'? Что такое с фанки-двойным кавычкой в OP? Это 'chr (226)'? Это часть вашего исходного кода? – mob
Это просто кавычки - просто подумайте, что формат изменился, когда я вставил здесь – Anand