"!"를 탈출하는 방법 및 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"

관련 정보