Cómo escapar "!" y "&" en las variables de entorno de Docker

Cómo escapar "!" y "&" en las variables de entorno de Docker

Tengo un contenedor acoplable que quiero ejecutar y entregarle algunas contraseñas. Uno con un signo de exclamación !y el otro con un signo comercial &. Entonces quiero ejecutar esto:

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

Eso no funciona. &se reemplaza {LDAP_FILTER}y !se trunca. Estoy bastante seguro de que tengo que escapar de ellos. Pero \!y \&no funcionó.

Respuesta1

Encontré una solución:

  • Usar comillas simples en lugar de comillas dobles
  • Escapar del signo comercial &a\&
  • Sin escapar del signo de exclamación!

entonces esto funciona:

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

Respuesta2

Si no puede utilizar comillas simples para toda la cadena por algún motivo (por ejemplo, expansión de variables), esta es probablemente la mejor solución:En bash, ¿cómo puedo escapar de un signo de exclamación?

En resumen: utilice "'!'"alrededor del signo de exclamación:

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

información relacionada