Wie entkommen "!" und "&" in Umgebungsbedingungen von Docker

14735
DASKAjA

Ich habe einen Docker-Container, den ich ausführen und einige Passwörter übergeben möchte. Eines mit einem Ausrufezeichen !und das andere mit einem Et-Zeichen &. Also möchte ich das ausführen:

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

Das funktioniert nicht. &wird ersetzt und !abgeschnitten. Ich bin mir ziemlich sicher, dass ich diesen entkommen muss. Aber \!und \&hat nicht geklappt.

11
Hast du es mit einfachen Zitaten versucht? Da Sie keine Variablen zum Interpolieren haben, können Sie hier einfache Anführungszeichen verwenden. Rich Homolka vor 9 Jahren 2
Eine blinde Einstellung: Wenn der `-e`-Parameter von einer anderen Shell-Instanz ausgeführt wird, müssen Sie möglicherweise zweimal fliehen, also versuchen Sie es mit` \\\ & `und` \\\! `. mpy vor 9 Jahren 0

1 Antwort auf die Frage

13
DASKAjA

Ich habe eine Lösung gefunden:

  • Verwenden Sie Anführungszeichen anstelle von Anführungszeichen
  • Entfliehen Sie den Ampersand &zu\&
  • Dem Ausrufezeichen nicht entgehen !

das funktioniert also:

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