我正在编写一个bash脚本,用于自动安装带有postgresql数据库的django。 现在,我想通过命令替换数据库名称,因为它使用的是sqlite3数据库文件路径。
我写了这个命令:
sudo sed -i 's/os.path.join(BASE_DIR, 'db.sqlite3'),/'$project_name',/g' $projects_name/settings.py
但是当我制作django项目时,这并没有改变。
如何改变这一点,请帮助我。
答案 0 :(得分:2)
在sed
附近使用双引号进行变量扩展&保留单引号。
sed -i "s/os.path.join(BASE_DIR, 'db.sqlite3'),/$project_name,/g" "$project_name/settings.py"
在GNU sed version 4.2.1
答案 1 :(得分:1)
您应该转义'db.sqlite3'
中的引号:
sudo sed -i 's/os\.path\.join(BASE_DIR, '\''db\.sqlite3'\''),/'$project_name',/g' $projects_name/settings.py
您的sed模式为os.path.join(BASE_DIR, db.sqlite3),
,因为'db.sqlite3'
中的引号不会被解释为文字'
。相反,他们关闭并重新打开sed命令。