I have a config file called .env
which contains:
DB_PASSWORD={password}
Within /root/.mysql/db00.yml.db
we have a password for the MySQL root account. I'm trying to pipe this into sed
along the lines of:
cat /root/.mysql/db00.yml.db | sed -i -e "s/DB_PASSWORD=/DB_PASSWORD=(.*)/g" .env
Not having any luck, tried a few variations like:
sed -i "s/DB_PASSWORD=/DB_PASSWORD=$(cat /root/.mysql/db00.yml.db)" .env
mysqlpwd=$(cat /root/.mysql/db00.yml.db)
# Use the variable in sed -i
sed -i "s/DB_PASSWORD=/DB_PASSWORD=$mysqlpwd/g" .env
This produces the error:
root@linuxbox:/var/www/www.example.com# mysqlpwd=$(cat /root/.mysql/db00.yml.db)
root@linuxbox:/var/www/www.example.com# sed -i "s/DB_PASSWORD=/DB_PASSWORD=$mysqlpwd/g" .env
sed: -e expression #1, char 33: unknown option to `s'
Update:
Running it without /g
also fails:
root@linuxbox:/var/www/www.example.com# echo $mysqlpwd
Rjcr/Sn+s/a2QbGx
root@linuxbox:/var/www/www.example.com# cat .env | grep DB_PASSWORD
DB_PASSWORD=(.*)()
root@linuxbox:/var/www/www.example.com# sed -i "s/DB_PASSWORD=/DB_PASSWORD=$mysqlpwd/" .env
sed: -e expression #1, char 33: unknown option to `s'
None of these approaches seem to work.
I am running sed 4.7
, i.e.:
root@linuxbox:/var/www/www.example.com# sed --version
sed (GNU sed) 4.7
/
after the pwd in your last example./g
seems to fail also.s
off the start of the command ... sosed -i "s|DB_PASSWORD=|DB_PASSWORD=$mysqlpwd|" .env
. NOTE: you need to be sure your password doesn't have|
- you can use any other character (other than " :-)