Я пытаюсь использовать СЭД в следующем-иш образом:СЭД с произвольными переменными, которые могут содержать косую черту
VAR=`echo $STRING | sed s/$TOKEN/$REPLACEMENT/`
К сожалению, я пришел на случай, когда $ ЗАМЕНА может возможно содержать косую черту. Это приводит к тому, Баш жаловаться, так как она (оболочка) потенциально расширяет его на что-то вроде этого:
#given $VAR=I like bananas, $TOKEN=bananas, and $REPLACEMENT=apples/oranges
VAR=`echo I like bananas | sed s/bananas/apples/oranges/`
Так что теперь СЭД дается неверный аргумент с слишком много/'s. Есть ли хороший способ справиться с этим?
Вы должны заменить старые и обратные устарел тиков с скобки '$ (...)' пример: 'VAR = $ (эхо $ STRING | sed s/$ TOKEN/$ REPLACEMENT /) ' – Jotne
Возможный дубликат команды [sed: как использовать переменную] (http://stackoverflow.com/questions/19151954/sed-command-how-to-use- переменная) – devnull
Это хуже, чем это. Если $ TOKEN содержит метасимволы RE ('.',' * 'и т. Д.), То sed также оценит их. Это то, что вы хотите? –