Entkomme eine Zeichenfolge für ein Sed-Ersatzmuster

In meinem bash-Skript, ich habe eine externe (empfangen von Benutzer -) saite, die ich verwenden soll, in der sed-Muster.

REPLACE="<funny characters here>"
sed "s/KEYWORD/$REPLACE/g"

Wie kann ich entkommen das $REPLACE string so wäre es sicher akzeptiert sed als literal Ersatz?

HINWEIS: Die KEYWORD ist eine dumme substring keine Spiele etc. Es ist nicht vom Benutzer bereitgestellte.

Kommentar zu dem Problem - Öffnen
Versuchen Sie zu vermeiden, die "Little Bobby Tables" problem, wenn Sie sagen "/g -e 's/PASSWORD=.*/PASSWORD=abc/g'"? Kommentarautor: Paul Tomblin
Ja, auch dieses. Kommentarautor: Alexander Gladysh
Wenn Sie die bash benutzen, benötigen Sie keinen sed. Verwenden Sie einfach die outputvar="${inputvar//"$txt2replace"/"$txt2replacewith"}". Kommentarautor: destenson
Siehe auch: stackoverflow.com/q/29613304/45375 Kommentarautor: mklement0
@CamiloMartin, siehe mein Kommentar zu meiner eigenen Antwort. Die Anführungszeichen innerhalb der ${} nicht übereinstimmen mit den Anführungszeichen innerhalb. Die beiden Variablen werden nicht außerhalb der Anführungszeichen. Kommentarautor: destenson

InformationsquelleAutor der Frage Alexander Gladysh | 2009-01-02

Schreibe einen Kommentar