Wie man "!" und "&" in Docker-Umgebungsvariablen

16

Ich habe einen Docker-Container, den ich ausführen und ihm einige Passwörter übergeben möchte. Einer mit einem Ausrufezeichen !und der andere mit einem kaufmännischen Und &. Also möchte ich Folgendes 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 {LDAP_FILTER}und !abgeschnitten. Ich bin mir ziemlich sicher, dass ich diesen entkommen muss. Aber \!und \&hat nicht geklappt.

DASKAjA
quelle
2
Haben Sie es mit einfachen Anführungszeichen versucht? Da Sie keine Variablen zum Interpolieren haben, können Sie hier mit einfachen Anführungszeichen davonkommen.
Rich Homolka
1
Ein blinder Schuss: Wenn der -eParameter durch eine andere Shell - Instanz ausgeführt wird, können Sie zweimal entkommen müssen, so versuchen \\\&und \\\!.
Mpy
@mpy der \\\ Trick hat es für mich getan, das ist das Beste!
Simon Schnell

Antworten:

17

Ich habe eine Lösung gefunden:

  • Verwenden von einfachen Anführungszeichen anstelle von doppelten Anführungszeichen
  • Entkomme dem kaufmännischen Und &nach\&
  • Dem Ausrufezeichen nicht entkommen !

Das funktioniert also:

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