script bash não está lendo ou analisando uma string contendo um ponto de exclamação! e asterisco *

0

Eu escrevi um script bash de pesquisa do ldap com escopo / filtro de pesquisa que contém o ponto de exclamação '!' e asterisco '*'. Algo parecido com isso e o script não está lendo a string entre aspas duplas corretamente. O mesmo filtro funciona bem quando eu passo na linha de comando:

"(&(objectclass=*)(uid=*)("\!"(roles=*)))"

Esta é a consulta completa do ldapsearch que está sendo executada no script bash:

ldapsearch -h localhost -p 389 -D "cn=ldapadm,o=proxy" -W - -b "ou=users,o=org" -s sub -LLL "(&(objectclass=*)(uid=*)("\!"(roles=*)))" | grep dn:
    
por Riz 22.03.2018 / 17:31

1 resposta

3

Use aspas simples, pois o conteúdo entre aspas duplas é interpolado pelo shell e uma estrela ou um estrondo tem um significado específico para ele.

-LLL '(&(objectclass=*)(uid=*)("\!"(roles=*)))'

Eu não sei se suas aspas duplas são necessárias, você provavelmente precisará removê-las também, então, de fato, a sintaxe deve ser:

-LLL '(&(objectclass=*)(uid=*)(!(roles=*)))'
    
por 22.03.2018 / 17:40