在双引号内转义 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"

相关内容