検索範囲/フィルターに感嘆符「!」とアスタリスク「*」を含む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=*)))'