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

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;
于 2012-07-11T05:20:05.987 に答える