How to escape "!" and "&" in docker's environment varibles

14631
DASKAjA

I have a docker container I want to run and hand it over some passwords. One with an exclamation mark ! and the other one with an ampersand &. So I want to run this:

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

That does not work. & gets replaced to and the ! get truncated. I'm pretty sure I have to escape these. But \! and \& didn't work out.

11
Вы пробовали с одинарными кавычками? Поскольку у вас нет переменных для интерполяции, вы можете обойтись без кавычек здесь. Rich Homolka 9 лет назад 2
Слепой выстрел: если параметр `-e` выполняется другим экземпляром оболочки, вам, возможно, придется выйти дважды, поэтому попробуйте` \\\ & `и` \\\! `. mpy 9 лет назад 0

1 ответ на вопрос

13
DASKAjA

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

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

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

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

Похожие вопросы