Bash 스크립트가 느낌표가 포함된 문자열을 읽거나 구문 분석하지 않았습니다! 별표 *

Bash 스크립트가 느낌표가 포함된 문자열을 읽거나 구문 분석하지 않았습니다! 별표 *

검색 범위/필터에 느낌표 "!"와 별표 "*"가 포함된 LDAP 검색 bash 스크립트를 작성했습니다. 이와 같은 것 및 스크립트는 큰따옴표 사이의 문자열을 올바르게 읽지 못합니다. 명령줄에 전달하면 동일한 필터가 제대로 작동합니다.

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

다음은 bash 스크립트에서 실행되는 전체 ldapsearch 쿼리입니다.

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

답변1

큰따옴표 안의 내용은 쉘에 의해 삽입되고 별표나 느낌표는 특정한 의미를 갖기 때문에 작은따옴표를 사용하십시오.

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

내부 큰따옴표가 필요한지 잘 모르겠고 이를 제거해야 할 수도 있으므로 실제로 구문은 다음과 같아야 합니다.

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

관련 정보