
Ich habe einen Docker-Container, den ich ausführen und ihm einige Passwörter übergeben möchte. Eines mit einem Ausrufezeichen !
und das andere mit einem Et-Zeichen &
. Ich möchte also 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 durch {LDAP_FILTER}
und !
wird abgeschnitten. Ich bin ziemlich sicher, dass ich diese maskieren muss. Aber \!
und \&
hat nicht geklappt.
Antwort1
Ich habe eine Lösung gefunden:
- Verwenden von einfachen Anführungszeichen anstelle von doppelten Anführungszeichen
- Entkomme dem Et-Zeichen,
&
um\&
- Dem Ausrufezeichen nicht entkommen
!
also das funktioniert:
docker run -i -t --rm \
-e 'LDAP_FILTER=(\&(objectCategory=person)(objectClass=user)' \
-e 'LDAP_PASS=Secret!Password' \
user-prefix/container-name
Antwort2
Wenn Sie aus irgendeinem Grund (z. B. wegen der Variablenerweiterung) nicht für die gesamte Zeichenfolge einfache Anführungszeichen verwenden können, ist dies wahrscheinlich die beste Lösung:Wie entkomme ich in Bash einem Ausrufezeichen?
Zusammenfassend: "'!'"
Um das Ausrufezeichen herum verwenden Sie:
echo "hello there"'!'" and goodbye"