我到处搜索,但我似乎找不到解决问题的方法。可能与代码有关。
我正在尝试从名为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
,但我找不到任何内容,所以我认为这是由于我的代码。
如何纠正此错误?或者我该如何跟踪错误?任何人? :)
答案 0 :(得分:2)
传递给-getstate
的错误值。您没有删除换行符。你错过了
chomp(@driverarray);