[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Inconsistent quote and escape handling in substitution part of param

From: John Kearney
Subject: Re: Inconsistent quote and escape handling in substitution part of parameter expansions.
Date: Tue, 28 Feb 2012 17:54:54 +0100
User-agent: Mozilla/5.0 (X11; Linux i686; rv:10.0) Gecko/20120129 Thunderbird/10.0

On 02/28/2012 05:22 PM, Roman Rakus wrote:
> On 02/28/2012 05:10 PM, John Kearney wrote:
>> wrap it with single quotes and globally replace all single quotes
>> in the string with '\''
> single quote and slash have special meaning so they have to be
> escaped, that's it. \'${var//\'/\\\'}\' it is not quoted, so it
> undergoes word splitting. To avoid it quote it in double quotes,
> however it changes how slash and single quote is treated. 
> "'${var//\'/\'}'"
> Wasn't it already discussed on the list?
> RR
It was discussed but not answered in a way that helped.

Look consider this

echo "${test//str/"dddd"}"

echo ${test//str/"dddd"}

echo ${test//str/"'"}

echo "${test//str/"'"}"

echo "${test//str/'}"   # hangs

now consider this case


echo "${test//"'"/"'"}"

the match string and the replace string are exhibiting 2 different

Now I'm not looking foe a workaround, I want to understand it.
Now you say they are treated special what does that mean and how can I
escape that specialness.

Or show me how without using variables
to do this

[ "${test}" = "${test//"'"/"'"}" ] || exit 999

Note this isn't the answer
[ "${test}" = "${test//'/'}" ] || exit 999

reply via email to

[Prev in Thread] Current Thread [Next in Thread]