2

我有这个 bash 代码

REPLACEMENT="s:define('CP_DIRECTORY.*:define('CP_DIRECTORY), ('"${NEWLOCATION}"');:;"
sed -i $REPLACEMENT $INITDATA;

它返回

sed: -e expression #1, char 9: unterminated `s' command

我正在尝试替换 initdata.php 中的一行,如下所示:

define( 'CP_DIRECTORY', 'admin' );

对此

define( 'CP_DIRECTORY', 'AJgBCecvPBUnPZCLvKukyzfehWrsF5wI' );
4

2 回答 2

2

在整个sed命令周围加上单引号:

sed -i 's:AdminCP = .*:AdminCP = "/home/pi/forums/AJgBCecvPBUnPZCLvKukyzfehWrsF5wI";:' forums/initdata.php

否则,命令会在空格上拆分。此外,您需要在星号前加一个点,否则您只是在说“零个或多个空格”。

于 2012-07-11T04:05:27.373 回答
0

感谢丹尼斯威廉姆森说我需要引用 sed 命令和http://www.linuxquestions.org/questions/linux-software-2/sed-with-bash-variables-304260/

最终代码是

    REPLACEMENT="define( 'CP_DIRECTORY' ), ( '"
    REPLACEMENT=$REPLACEMENT$NEWLOCATION;
    REPLACEMENT=$REPLACEMENT"' );:;";
    sed -i "s:define( 'CP_DIRECTORY.*:$REPLACEMENT" $INITDATA;
于 2012-07-11T05:20:05.987 回答