首页 > 解决方案 > 用 sed 替换 .py 文件中的值失败 - BASH

问题描述

我正在编写一个 bash 脚本来更新配置文件中的密码。

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_PASSWORDin的值更改为用户输入的值?settings.py

供参考: awk -F= '/^NAME/{print $2}' /etc/os-release产量:"Red Hat Enterprise Linux Server"

标签: bashsed

解决方案


推荐阅读