如何在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"

相关内容