Se você fizer isso:
ldapsearch -h ... "'(&(this)(that="${Field1}"))'"
As aspas simples farão parte da string citada, e elas irão para ldapsearch
. O que não os espera, dando o erro. Além disso, a expansão de ${Field1}
não é citada, uma vez que a segunda aspa dupla termina a citação. (Citações não se aninham).
Sua outra saída se parece com a saída do xtrace do Bash. Ele tenta dizer a você que o argumento realmente contém uma citação literal, mas é difícil ler a citação.
Neste:
''\''(&(|(ObjectClass=Group1)(ObjectClass=Group2))(Field1Attribute=FIELD1OUTPUT))'\'''
temos
'' -- an empty string
\' -- a literal backslash
'(&(|(...))' -- a quoted string
\' -- another literal backslash
'' -- another empty string
Eu suspeito que o que você quer é
ldapsearch -h ... "(&(this)(that=\"${Field1}\"))"
com as aspas duplas na string indo para ldapsearch
ou
ldapsearch -h ... "(&(this)(that=${Field1}))"
sem eles.
Em qualquer caso, sem as aspas simples ao redor. Não tenho certeza se as aspas duplas devem estar lá, não consigo lembrar qual formato o ldapsearch
aceita.
Tanto quanto eu posso testar na prática, isso funciona bem em uma máquina:
$ user=itvirta
$ ldapsearch -xLLL "(&(objectClass=shadowAccount)(uid=$user))"
$ ldapsearch -xLLL '(&(objectClass=shadowAccount)(uid=itvirta))'