如何逃脫“!”以及docker環境變數中的“&”

如何逃脫“!”以及docker環境變數中的“&”

我有一個 docker 容器,我想運行並交給它一些密碼。一個帶有感嘆號!,另一個帶有 & 符號&。所以我想運行這個:

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

那是行不通的。&被替換為{LDAP_FILTER}並被!截斷。我很確定我必須逃離這些。但\!\&沒有成功。

答案1

我找到了一個解決方案:

  • 使用單引號代替雙引號
  • 將 & 符號轉義&\&
  • 沒有逃脫驚嘆號!

所以這有效:

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

答案2

如果由於某種原因(例如變數擴展)無法對整個字串使用單引號,這可能是最好的解決方案:在 bash 中,如何轉義感嘆號?

總之:"'!'"在感嘆號周圍使用:

echo "hello there"'!'" and goodbye"

相關內容