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

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

Eu tenho um contêiner docker que quero executar e entregar algumas senhas. Um com ponto de exclamação !e outro com 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 !fica truncado. Tenho certeza que tenho que escapar disso. Mas \!e \&não deu certo.

Responder1

Encontrei uma solução:

  • Usando aspas simples em vez de aspas duplas
  • Fuja do e comercial &para\&
  • Não 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

Responder2

Se você não puder usar aspas simples para toda a string por algum motivo (por exemplo, expansão de variável), esta é provavelmente a melhor solução:No bash, como faço para escapar de um ponto de exclamação?

Em resumo: Use "'!'"próximo ao ponto de exclamação:

echo "hello there"'!'" and goodbye"

informação relacionada