チュートリアルで次のコマンドを実行しようとしています。
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"