Як уникнути "!" Та "&" у змінних середовища докера


15

У мене є контейнер докера, який я хочу запустити і передати йому деякі паролі. Один зі знаком оклику, !а другий - амперсандою &. Тому я хочу запустити це:

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

Це не працює. &стає заміненим {LDAP_FILTER}і !обрізаним. Я майже впевнений, що мені доведеться уникнути цих. Але так \!і \&не вийшло.


2
Ви пробували з одинарними цитатами? Оскільки у вас немає змінних для інтерполяції, ви можете піти з однієї лапки тут.
Багата Гомолка

1
Сліпий постріл: Якщо -eпараметр запускається на виконання інший примірник оболонки, ви , можливо , доведеться двічі бігти, так що спробуйте \\\&і \\\!.
mpy

@mpy хитрість \\\ зробила це для мене, це найкраще!
Саймон Шнелл

Відповіді:


15

Я знайшов рішення:

  • Використання одинарних лапок замість подвійних
  • Втекти від амперсанда &до\&
  • Не уникаючи знака оклику !

так це працює:

docker run -i -t --rm \
-e 'LDAP_FILTER=(\&(objectCategory=person)(objectClass=user)' \
-e 'LDAP_PASS=Secret!Password' \
user-prefix/container-name
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.