On 02/28/2012 06:52 PM, John Kearney wrote: > On 02/28/2012 06:43 PM, Dan Douglas wrote: >> On Tuesday, February 28, 2012 06:38:22 PM John Kearney wrote: >>> On 02/28/2012 06:31 PM, Dan Douglas wrote: >>>> On Tuesday, February 28, 2012 05:53:32 PM Roman Rakus wrote: >>>>> On 02/28/2012 05:49 PM, Greg Wooledge wrote: >>>>>> On Tue, Feb 28, 2012 at 05:36:47PM +0100, Roman Rakus >>>>>> wrote: >>>>>>> And that means, there isn't way to substitute "something" >>>>>>> to ' (single quote) when you want to not perform word >>>>>>> splitting. I would consider it as a bug. >>>>>> >>>>>> imadev:~$ q=\' imadev:~$ input="foosomethingbar" imadev:~$ >>>>>> echo "${input//something/$q}" foo'bar >>>>> >>>>> I meant without temporary variable. >>>>> >>>>> RR >>>> >>>> ormaaj@ormaajbox ~ $ ( x=abc; echo ${x/b/$'\''} ) a'c >>> >>> ( x=abc; echo "${x/b/$'\''}" ) -bash: bad substitution: no >>> closing `}' in "${x/b/'}" >>> >>> >>> you forgot the double quotes ;) >>> >>> >>> I really did spend like an hour or 2 one day trying to figure it >>> out and gave up. >> >> Hm good catch. Thought there might be a new quoting context over >> there. > I think we can all agree its inconsistent, just not so sure we care?????? > i.e. we know workarounds that aren't so bad variables etc. > > > > > To sum up
bash treats replacement strings inconsistently in double quoted variable expansion. example double quote is treated both as literal and as quote character. ( test=test123test ; echo "${test/123/"'"}" ) test"'"test vs ( test=test123test ; echo "${test/123/'}" ) which hangs waiting for ' treated as literal because it is printed treated as quote char because otherwise it should hang waiting for ' now teh single quote and backslash characters all seem to exhibit this dual nature in the replacement string. search string behaves consistantly. i.e. treats characters either as special or literal, not as both at teh same time. this has got to be a bug guys.