Как сбежать "!" и "&" в переменных окружения докера
У меня есть докер-контейнер, который я хочу запустить и передать некоторые пароли. Один с восклицательным знаком !
а другой с амперсандом &
, Итак, я хочу запустить это:
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"