ldapsearch -h 1.0.24.24 -p 389 -x -t -LLL -S cn -D
cn=user,ou=resources,o=otherresource,c=xx -w server101 -b ou=Non-
Staff,ou=people,o=test,c=us '(&(objectClass=inetOrgPerson)
(createTimestamp<=$month_8)(!(nEApps=*))(nEDHHSNFAccNbr=\00)
(nECreatedBy=cioSelfRegistered)(loginTime<=$month_3))' dn
如果过滤器用双引号引起来,我只能使用我的变量 如果它们被单引号括起来,我只能使用 not 过滤器,有没有办法在同一个查询中使其工作?
最佳答案
!
在交互模式下是一个特殊字符(它执行命令历史替换),但在脚本中则不是。这应该是您以交互方式输入的内容,还是嵌入脚本中的内容?如果是后者,您可以只使用双引号,并且 !
不会成为问题。
如果您以交互方式使用此功能,则有多种选择。一种是在单个参数中混合引用模式,如"double-quoted-section"'single-quoted-section'"another-quoted-section"
。这看起来很奇怪,但效果很好。像这样的事情:
ldapsearch -h 1.0.24.24 -p 389 -x -t -LLL -S cn \
-D cn=user,ou=resources,o=otherresource,c=xx -w server101 \
-b ou=Non-Staff,ou=people,o=test,c=us \
"(&(objectClass=inetOrgPerson)(createTimestamp<=$month_8)("'!'"(nEApps=*))(nEDHHSNFAccNbr=\00)(nECreatedBy=cioSelfRegistered)(loginTime<=$month_3))" dn
^^^^^
或者,您可以将变量定义为 !
(使用单引号),然后在双引号内使用该变量:
exclamation='!'
ldapsearch -h 1.0.24.24 -p 389 -x -t -LLL -S cn \
-D cn=user,ou=resources,o=otherresource,c=xx -w server101 \
-b ou=Non-Staff,ou=people,o=test,c=us \
"(&(objectClass=inetOrgPerson)(createTimestamp<=$month_8)($exclamation(nEApps=*))(nEDHHSNFAccNbr=\00)(nECreatedBy=cioSelfRegistered)(loginTime<=$month_3))" dn
^^^^^^^^^^^^
关于linux - 如何使用变量和 not 过滤器运行 LDAP 搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50183203/