sed unterminated的'命令

时间:2012-07-11 04:02:08

标签: bash sed sh

我有这个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' );

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

感谢Dennis Williamson说我需要引用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;
相关问题