我想從我的PERL腳本調用ksh腳本,但無法這樣做。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的KSH腳本運行後)的輸出文件,我讀稍後在我的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腳本上使用什麼I/O重定向?例如,在'/ dev/null'輸入或者輸出發送到'/ dev/null'時,'lookupCal.ksh'腳本的行爲是否正確?信號11通常是SIGSEGV,分段違規;這是腳本中的問題。 –
'$ cmdString =「...」;'?什麼是OP中時髦的雙引號字符?那是'chr(226)'?是你的源代碼的一部分? – mob
這只是引號 - 只是認爲當我粘貼 – Anand