「!」からの脱出方法 Docker環境変数の「&」


16

実行したいドッカーコンテナーがあり、いくつかのパスワードを渡します。1つは感嘆符付き!で、もう1つはアンパサンド付き&です。だから私はこれを実行したい:

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

それは機能しません。&に置き換えられ{LDAP_FILTER}!切り捨てられます。私はこれらを逃れなければならないと確信しています。しかし\!\&うまくいきませんでした。


2
一重引用符で試しましたか?補間する変数がないため、ここで一重引用符で回避できます。
リッチホモルカ14年

1
ブラインドショット:場合は-eパラメータは別のシェルインスタンスで実行されます、あなたがそうしようと、二回エスケープする必要がある場合があります\\\&\\\!
mpy 14年

@mpyが\\\トリックを使ってくれたので、最高です!
サイモンシュネル

回答:


17

私は解決策を見つけました:

  • 二重引用符の代わりに単一引用符を使用する
  • アンパサンド&をエスケープします\&
  • 感嘆符をエスケープしない !

これは動作します:

docker run -i -t --rm \
-e 'LDAP_FILTER=(\&(objectCategory=person)(objectClass=user)' \
-e 'LDAP_PASS=Secret!Password' \
user-prefix/container-name
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.