1

我到处搜索,但似乎找不到解决问题的方法。可能,它与代码有关。

我试图从一个名为 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,但我找不到任何东西,所以我认为这是由于我的代码。

我该如何纠正这个错误?或者我如何跟踪错误?任何人?:)

4

1 回答 1

2

传递给 的值错误-getstate。您没有删除换行符。你不见了

chomp(@driverarray);
于 2013-04-17T14:56:25.493 回答