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

DAS*_*AjA 21 shell escape-characters escaping docker

我有一个 docker 容器,我想运行它并把它交给一些密码。一个带有感叹号!,另一个带有&符号&。所以我想运行这个:

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

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

DAS*_*AjA 22

我找到了一个解决方案:

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

所以这有效:

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