如何逃脱“!” 和docker环境变量中的“&”


16

我有一个要运行的Docker容器并将其交给一些密码。一个带有感叹号!,另一个带有“&”号&。所以我想运行这个:

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

那行不通。&被替换到{LDAP_FILTER}!截断。我很确定我必须逃避这些。但是\!\&并没有解决。


2
您是否尝试过使用单引号?由于您没有要内插的变量,因此可以在此处省略单引号。
Rich Homolka 2014年

1
盲目-e尝试:如果参数由另一个Shell实例执行,则可能必须转义两次,因此请尝试\\\&\\\!
mpy 2014年

@mpy的\\\技巧对我有用,那就是最好的!
西蒙·施奈尔

Answers:


17

我找到了解决方案:

  • 使用单引号而不是双引号
  • 逃离符号&\&
  • 不逃避感叹号 !

所以这工作:

docker run -i -t --rm \
-e 'LDAP_FILTER=(\&(objectCategory=person)(objectClass=user)' \
-e 'LDAP_PASS=Secret!Password' \
user-prefix/container-name
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.