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