Если запускать echo | sed внутри обратных апострофов, знак доллара не заменит. Если вне их, заменит:


$ name1='a$b'; echo $name1 | sed 's/\$/ /g'; name2=`echo $name1 | sed 's/\$/ /g'`; echo $name2
a b
a$b


Если заменить $ на \x24, то не сработает нигде:


$ name1='a$b'; echo $name1 | sed 's/\x24/ /g'; name2=`echo $name1 | sed 's/\x24/ /g'`; echo $name2
a$b
a$b


Но если взять \x24 в квадратные скобки, заработает:


$ name1='a$b'; echo $name1 | sed 's/[\x24]/ /g'; name2=`echo $name1 | sed 's/[\x24]/ /g'`; echo $name2
a b
a b


Почему так происходит?









 , ,






URL записи