3
1
I'm trying to make a command to do a perl substitution on a batch of php files in a directory. The string I want to replace has single quotes in it, and I can't get it to properly escape the in shell.
I tried echoing the string with unescaped quotes, to see what perl would be getting:
echo 's/require_once\('include\.constants\.php'\);/require_once\('include\.constants\.php'\);require_once\("\./functions/include\.session\.inc\.php"\);/g'
and it doesn't have the single-quotes in the result:
s/require_once\(include.constants.php\);/require_once\(include.constants.php\);require_once\("\./functions/include\.session\.inc\.php"\);/g
However, when I try to escape the single quotes:
echo 's/require_once\(\'include\.constants\.php\'\);/require_once\(\'include\.constants\.php\'\);require_once\("\./functions/include\.session\.inc\.php"\);/g'
I get the prompt to complete the command:
>
What I want it to parse to is this:
s/require_once\('include.constants.php'\);/require_once\('include.constants.php'\);require_once\("\./functions/include\.session\.inc\.php"\);/g
What am I doing wrong?
I get command completion prompt from this :( – user13743 – 2010-04-01T15:36:47.800
@user13743 - did you copy paste my solution. what type of shell do you have? – Nifle – 2010-04-01T15:39:52.550
Yeah, I copied and pasted your solution.
$ echo $SHELL
gives/bin/bash
– user13743 – 2010-04-01T15:48:20.553@user13743 - Try just
echo "s/require_once\('include"
if that works add some more of the stringecho "s/require_once\('include.constants.php'\);/"
. Repeat until it breaks. This should narrow down the error. – Nifle – 2010-04-01T17:27:19.083