Jak uciec „!” oraz „&” w zmiennych środowiska dokera


16

Mam kontener dokera, który chcę uruchomić, i przekazuję mu niektóre hasła. Jeden ze znakiem wykrzyknika, !a drugi ze znakiem ampersand &. Więc chcę uruchomić to:

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

To nie działa. &zostanie zastąpiony {LDAP_FILTER}i !zostanie obcięty. Jestem prawie pewien, że muszę uciec. Ale \!i \&nie wyszło.


2
Próbowałeś z pojedynczymi cytatami? Ponieważ nie masz żadnych zmiennych do interpolacji, możesz uciec od pojedynczych cudzysłowów tutaj.
Rich Homolka

1
Ślepy strzał: jeśli -eparametr zostanie wykonany przez inną instancję powłoki, być może będziesz musiał dwa razy uciec, więc spróbuj \\\&i \\\!.
mpy

@ moja sztuczka zrobiła to dla mnie, to jest najlepsze!
Simon Schnell

Odpowiedzi:


17

Znalazłem rozwiązanie:

  • Używanie pojedynczych cudzysłowów zamiast podwójnych cudzysłowów
  • Escape ampersand &to\&
  • Nie ucieka wykrzyknikowi !

więc to działa:

docker run -i -t --rm \
-e 'LDAP_FILTER=(\&(objectCategory=person)(objectClass=user)' \
-e 'LDAP_PASS=Secret!Password' \
user-prefix/container-name
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.