Как сбежать "!" и "&" в переменных окружения докера

У меня есть докер-контейнер, который я хочу запустить и передать некоторые пароли. Один с восклицательным знаком ! а другой с амперсандом &, Итак, я хочу запустить это:

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

Это не работает. & заменяется на {LDAP_FILTER} и ! укоротить. Я почти уверен, что должен избежать этого. Но \! а также \& не сработало.

2 ответа

Я нашел решение:

  • Использование одинарных кавычек вместо двойных
  • Избежать амперсанда & в \&
  • Не выходя из восклицательного знака !

так что это работает:

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

Если по какой-то причине вы не можете использовать одинарные кавычки для всей строки (например, расширение переменной), это, вероятно, лучшее решение: как в bash избежать восклицательного знака?

Вкратце: используйте"'!'"вокруг восклицательного знака:

      echo "hello there"'!'" and goodbye"
Другие вопросы по тегам