I want to escape some special chars inside a string automatically. I thought of echoing that string and pipe it through some seds. This doesn\'t seem to work inside of backt
How about not using backticks but use $() ?
FOO=$(echo "foo[bar]" | sed 's/\[/\\[/g') && echo $FOO
if you insist on using backticks, I think you need to extra escape all \ into double \
FOO=`echo "foo[bar]" | sed 's/\\[/\\\\[/g'` && echo $FOO
You need to escape the backslashes between the backticks.
FOO=`echo "foo[bar]" | sed 's/\\[/\\\\[/g'` && echo $FOO
Alternatively, use $()
(this is actually the recommended method).
FOO=$(echo "foo[bar]" | sed 's/\[/\\[/g') && echo $FOO
Usually, it's a case of underescaping
FOO=`echo "foo[bar]" | sed 's/\[/\\\[/g'` && echo $FOO