큰따옴표 안의 bash 특수 문자를 이스케이프하세요.

큰따옴표 안의 bash 특수 문자를 이스케이프하세요.

튜토리얼에서 다음 명령을 실행하려고 합니다.

docker run --rm -v $(pwd):/check --network des mongo:4.2 bash -c \
"mongorestore -hmongo -u moAdmin -p <PWD> --gzip --archive=/check/test.gz  --nsInclude='test.*' --drop"

문제는 비밀번호에 포함되어 있다는 것입니다! 및 | 사용된 큰따옴표 내에서 이를 올바르게 이스케이프하는 방법을 잘 모르겠습니다.

당신의 도움을 주셔서 감사합니다!

답변1

기록 확장을 일시적으로 끌 수 있습니다.

set +H
docker run --rm -v $(pwd):/check --network des mongo:4.2 bash -c \
"mongorestore -hmongo -u moAdmin -p <PWD> --gzip --archive=/check/test.gz  --nsInclude='test.*' --drop"
set -H

또는 역할을 직접 이스케이프할 수 있습니다.

docker run --rm -v $(pwd):/check --network des mongo:4.2 bash -c \
"mongorestore -hmongo -u moAdmin -p P@assword\! --gzip --archive=/check/test.gz  --nsInclude='test.*' --drop"

변수에 저장할 수 있습니다.

password='P@ssword!'
docker run --rm -v $(pwd):/check --network des mongo:4.2 bash -c \
"mongorestore -hmongo -u moAdmin -p \"$password\" --gzip --archive=/check/test.gz  --nsInclude='test.*' --drop"

관련 정보