bash - 用 sed 替换 .py 文件中的值失败 - BASH
问题描述
我正在编写一个 bash 脚本来更新配置文件中的密码。
- 配置文件,
settings.py
是一个python文件 - 文件中的密码是一个变量,如下所示:
TEST_PASSWORD = 'SomeValue'
我需要做的是在 Linux 终端中输入命令以扫描该文件,并替换'SomeValue'
为我输入的内容。
我想一些伪代码看起来像:
update_password(){
echo "What do you want to update the password to?"
new_pass = -> Read in user value into
-> update settings.py and change:
TEST_PASSWORD = 'SomeValue'
to
TEST_PASSWORD = "'" + new_pass + "'"
}
(它必须作为字符串包含在settings.py
文件中)
到目前为止,我已经尝试过单线:
sed -i 's/TEST_PASSWORD = 'test'/TEST_PASSWORD = 'new_val'/g' test/settings.py
什么也没有发生。如中,文件根本没有改变。(从这里引用)
完整的程序如下所示:
#!/bin/bash
read -p "Enter a password: " password
echo "Got password"
echo " "
sed -i 's/TEST_PASSWORD = / TEST_PASSWORD = $password/g' test/settings.py
但在 中settings.py
,它发生了变化:
TEST_PASSWORD = 'test'
至TEST_PASSWORD = $password'test'
在不知道当前密码是什么的情况下,如何将TEST_PASSWORD
in的值更改为用户输入的值?settings.py
供参考:
awk -F= '/^NAME/{print $2}' /etc/os-release
产量:"Red Hat Enterprise Linux Server"
解决方案
推荐阅读
- python - Keras Conv2D 自定义内核初始化
- sql-server-2012 - SQL Server 2012 中的数据屏蔽实现。如何控制对用户的访问?
- android - 为按钮添加彩色阴影
- c# - 设置 OxyPlot 图表标题
- javascript - JavaScript FileReader 正在复制 onload 回调
- python - Django celery beat 在 Elastic Beanstalk 上看不到周期性任务
- git - 'git commit' 和 'git status' 矛盾
- javascript - 引导日期选择器位置
- android - LinearLayout getChildAt 在 Nougat 中的工作方式不同
- quotations - 使用由另一个单词计算的引用会导致编译错误