Как избежать «!» и «&» в переменных окружения докера

16

У меня есть докер-контейнер, который я хочу запустить и передать некоторые пароли. Один с восклицательным знаком, !а другой с амперсандом &. Итак, я хочу запустить это:

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

Это не работает. &заменяется {LDAP_FILTER}и !усекается. Я почти уверен, что должен избежать этого. Но так \!и \&не получилось.

DASKAjA
источник
2
Вы пробовали с одинарными кавычками? Поскольку у вас нет переменных для интерполяции, вы можете обойтись без кавычек здесь.
Богатая гомолка
1
Слепой выстрел: если -eпараметр выполняется другим экземпляром оболочки, вам, возможно, придется выйти дважды, поэтому попробуйте \\\&и \\\!.
mpy
@ Мило \\\ трюк сделал это для меня, это лучшее!
Саймон Шнелл

Ответы:

17

Я нашел решение:

  • Использование одинарных кавычек вместо двойных
  • Побег амперсанд &в\&
  • Не выходя из восклицательного знака !

так что это работает:

docker run -i -t --rm \
-e 'LDAP_FILTER=(\&(objectCategory=person)(objectClass=user)' \
-e 'LDAP_PASS=Secret!Password' \
user-prefix/container-name
DASKAjA
источник