我到处搜索,但似乎找不到解决问题的方法。可能,它与代码有关。
我试图从一个名为 DXCMD 的 Novell 程序中捕获退出代码,以检查某些“驱动程序”是否正在运行。这在 bash 中没有问题,但我需要编写一个更复杂的 perl 脚本(例如,更容易使用数组)。
这是代码:
#Fill the driverarray with the results from ldapsearch (in ldap syntax)
@driverarray =`ldapsearch -x -Z -D "$username" -w "$password" -b "$IDM" -s sub "ObjectClass=DirXML-Driver" dn | grep ^dn:* | sed 's/^....//' | sed 's/cn=//g;s/dc=//g;s/ou=//;s/,/./g'`;
#iterate through drivers and get the exit code:
foreach $driverdn (@driverarray)
{
my $cmd = `/opt/novell/eDirectory/bin/dxcmd -user $username -password $password -getstate "$driverdn"`;
my $driverstatus = $?>>8;
}
我已经走到这一步了;编写其余代码(获取状态)。但$?>>8
代码总是返回60
。当我将命令直接复制到 shell 并回显$?
时,返回代码总是2
(这意味着驱动程序运行良好)。在 bash 中,代码也可以工作(但>>8
显然没有 )。
我查看了错误代码60
,但我找不到任何东西,所以我认为这是由于我的代码。
我该如何纠正这个错误?或者我如何跟踪错误?任何人?:)