
我有一個 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"