# inconsistency with quoted pattern substitution patterns through bash-4.2 # fixed in a ksh93-compatible (and Posix-compatible, in general) way # NOT backwards compatible test="weferfds'dsfsdf" # why does this work, this list was born of frustration, I tried # everything I could think of. echo \'${test//"'"/\'\\\'\'}\'" " #but none of the following echo "'${test//"'"/}'" echo "'${test//"'"/"'\\''"}'" echo "'${test//"'"/\'\\'\'}'" #echo "'${test//'/}'" # hangs waiting for ' #echo "'${test//"'"/'\\''}'" # hangs waiting for ' unset test test=teststrtest echo "${test//str/"dd dd"}" echo ${test//str/"dd '\''dd"} unset test test=teststring echo "${test//str/"dddd"}" echo ${test//str/"dddd"} echo ${test//str/"'"} echo "${test//str/"'"}" #echo "${test//str/'}" # hangs test=test\'string echo "${test//"'"/"'"}" x="a'b'c"; echo "${x//\'/\'}" printf '%s\n' "foo ${IFS+"b c"} baz" # this is where the default behavior differs from posix set -o posix echo "foo ${IFS+'bar} baz"