Cách thoát khỏi! và & & trong các môi trường của docker


16

Tôi có một container docker tôi muốn chạy và bàn giao một số mật khẩu. Một cái có dấu chấm than !và cái còn lại có dấu và &. Vì vậy, tôi muốn chạy này:

docker run -i -t --rm \
-e "LDAP_FILTER=(&(objectCategory=person)(objectClass=user)" \
-e "LDAP_PASS=Secret!Password" \
user-prefix/container-name

Điều đó không làm việc. &được thay thế {LDAP_FILTER}!bị cắt ngắn. Tôi khá chắc chắn rằng tôi phải thoát khỏi những điều này. Nhưng \!\&đã không làm việc ra.


2
Bạn đã thử với dấu ngoặc đơn? Vì bạn không có bất kỳ biến nào để nội suy, bạn có thể thoát khỏi các dấu ngoặc đơn ở đây.
Rich Homolka

1
Một cú đánh mù: Nếu -etham số được thực thi bởi một thể hiện shell khác, bạn có thể phải thoát hai lần, vì vậy hãy thử \\\&\\\!.
mpy

@mpy lừa \ \ đã làm điều đó cho tôi, đó là tốt nhất!
Simon Schnell

Câu trả lời:


17

Tôi tìm thấy một giải pháp:

  • Sử dụng dấu ngoặc đơn thay vì dấu ngoặc kép
  • Thoát khỏi dấu và &để\&
  • Không thoát khỏi dấu chấm than !

vì vậy điều này hoạt động:

docker run -i -t --rm \
-e 'LDAP_FILTER=(\&(objectCategory=person)(objectClass=user)' \
-e 'LDAP_PASS=Secret!Password' \
user-prefix/container-name
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.