相关疑难解决方法(0)

如何使用sed更改我的配置文件,灵活的键和值?

我想在配置文件中搜索此表达式:"central.database".然后,我想将与"central.database"关联的设置更改为"SQLTEST".

配置文件的布局最初看起来像这样:

central.database = SQLFIRSTTEST
Run Code Online (Sandbox Code Playgroud)

这是我希望它在sed替换后看起来像:

central.database = SQLTEST
Run Code Online (Sandbox Code Playgroud)

我在bash脚本中这样做,欢迎任何建议,建议或替代解决方案!

(其实都central.databaseSQLTEST这里来自bash的变量.)


我目前的代码(第三次尝试):

sshRetValue=$(ssh -p "35903" -i $HOME/sshids/idrsa-1.old ${1} <<EOF
        sed -i "s/^\($CENTRAL_DB_NAME\s*=\s*\).*\$/\1$CENTRAL_DB_VALUE/" /home/testing.txt;
        echo $?
EOF
)
Run Code Online (Sandbox Code Playgroud)

错误信息:

Pseudo-terminal will not be allocated because stdin is not a terminal.
sed: -e expression #1, char 58: unknown option to `s'
-bash: line 3: EOF: command not found
Run Code Online (Sandbox Code Playgroud)

linux bash sed

38
推荐指数
4
解决办法
7万
查看次数

如何使用 bash shell 脚本从 PHP 配置文件读取变量

我正在尝试使用 bash 从 php 配置文件中读取一些变量,它在大部分情况下都有效,但我在尝试使用传回的值时遇到问题。
该变量在配置中找到,但当它被传回时,它仍然带有 PHP 的单引号或双引号。

这是我正在使用的。

DBPASS="$(grep -oE '\$database_password = .*;' $CONFIG | tail -1 | sed 's/$database_password = //g;s/;//g')"
Run Code Online (Sandbox Code Playgroud)

现在,变量可以用单引号或双引号括起来,并且单引号可以出现在密码字段中。所以我不能把它们全部去掉。

知道怎么做吗?

更新

因此,采用另一种方式,我在 bash 脚本(基本上备份 CMS)中添加了一些内容,该脚本将查找并编写一些 PHP“帮助程序”。该助手只会读取配置,构建一个数组并将其传递回 bash 脚本。

HELPER="backup-helper.php";

CONFIG="../core/config/config.inc.php"

if [ ! -f "$HELPER" ]; then
    echo '<?php' >> $HELPER;
    echo '$config = "$argv[1]";' >> $HELPER;
    echo 'include_once($config);' >> $HELPER;
    echo 'echo $dbase;' >> $HELPER; 
    echo 'echo $modx_core_path;' >> $HELPER;

    echo 'return "this";' >> $HELPER;
    chmod 755 $HELPER;

    php $HELPER  $CONFIG;
fi
Run Code Online (Sandbox Code Playgroud)

所以这基本上只是寻找帮助程序文件并创建它(如果它不存在),然后运行它来测试 - …

bash shell

0
推荐指数
1
解决办法
2390
查看次数

标签 统计

bash ×2

linux ×1

sed ×1

shell ×1