我確定之前已經詢問過這個問題,如果有問題,但我無法找到它,我很抱歉。
我試圖用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 ('[email protected]','mypassword');
EOF
sed -i "s/mypassword/${rootpw}/" tmp
所以如何正確脫出$符號s/mypassword/${rootpw}/
是否'rootpw'變量包含換行? – Thor 2013-03-07 21:22:44
沒有。如果您安裝了鴿舍,請運行'doveadm pw -s SHA512-CRYPT -p somepassword'以查看輸出 – Christian 2013-03-07 21:27:05