どこでも検索しましたが、問題の解決策が見つからないようです。おそらく、コード関連です。
特定の「ドライバー」が実行されているかどうかを確認するために、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
。コマンドをシェルに直接コピーして をエコーする$?
と、戻りコードは常に2
(ドライバーが正常に動作していることを意味します) になります。bash では、コードも機能します (ただし>>8
、明らかに はありません)。
エラーコードを調べましたが、60
何も見つからないので、私のコードが原因だと思います。
このエラーを修正するにはどうすればよいですか? または、どうすればエラーを追跡できますか? 誰?:)