
У меня есть 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"