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