Como escapar de "!" e "&" nas variáveis ​​de ambiente do docker

16

Eu tenho um contêiner de docker que desejo executar e entregue algumas senhas. Um com um ponto de exclamação !e o outro com um e comercial &. Então, eu quero executar isso:

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

Isso não funciona. &é substituído {LDAP_FILTER}e !truncado. Tenho certeza de que tenho que escapar deles. Mas \!e \&não deu certo.

DASKAjA
fonte
2
Você já tentou com aspas simples? Como você não possui variáveis ​​para interpolar, você pode usar aspas simples aqui.
Rich Homolka
1
Um tiro cego: se o -eparâmetro for executado por outra instância do shell, talvez você precise escapar duas vezes, então tente \\\&e \\\!.
precisa
@py o truque \\\ fez isso por mim, isso é o melhor!
Simon Schnell

Respostas:

17

Encontrei uma solução:

  • Usando aspas simples em vez de aspas duplas
  • Escape do e comercial &para\&
  • Não está escapando do ponto de exclamação !

então isso funciona:

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