我确定以前有人问过这个问题,如果有,我很抱歉,但我找不到。
我试图用 dovecot SHA512-CRYPT 密码替换下面的“mypassword”,但美元符号搞砸了,我不知道如何逃脱它。
生成的密码doveadm pw -s SHA512-CRYPT -p ${rootemailpw}
如下所示,其中包含几个美元符号:
{SHA512-CRYPT}$6$sujue1sr0abLZisA$Dq1qtz422woyR/A4wDaJ9JYByKHis27FO.mO5EfUCDuI/PRSawxgCRGA3Oq/LE4Nbr32nCr4731BCPIotmRNR0
这是我正在使用的脚本:
rootemailpw=$(</dev/urandom tr -dc A-Za-z0-9 | head -c12)
rootpw=$(doveadm pw -s SHA512-CRYPT -p ${rootemailpw})
cat <<'EOF' > tmp
USE `postfix`;
INSERT INTO `users` (`username`,`password`) VALUES ('root@localhost','mypassword');
EOF
sed -i "s/mypassword/${rootpw}/" tmp
那么如何正确地转义 $ 符号s/mypassword/${rootpw}/