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=*)))'

関連情報