Échapper à une chaîne pour un sed remplacer motif

Dans mon script bash que j'ai un externe (reçus de l'utilisateur) chaîne de caractères, qui je dois l'utilisation de sed modèle.

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

Comment puis-je échapper à la $REPLACE chaîne de sorte qu'il serait en sécurité acceptée par sed comme un littéral de remplacement?

REMARQUE: La KEYWORD est un muet sous-chaîne avec pas de matches etc. Il n'est pas fourni par l'utilisateur.

  • Êtes-vous en essayant d'éviter le "Petit Bobby Tables" problème si ils disent "/g -e 's/MOT de passe=.*/MOT de passe=abc/g'"?
  • Oui, celui-là aussi.
  • Si vous utilisez bash, vous n'avez pas besoin de sed. Utilisez simplement outputvar="${inputvar//"$txt2replace"/"$txt2replacewith"}".
  • Je pense que vous ne devriez pas mettre les deux variables en dehors de la cite. Bash peut lire des variables à l'intérieur des guillemets (dans votre exemple, les espaces pourraient vis les choses).
  • Voir aussi: stackoverflow.com/q/29613304/45375
  • voir mon commentaire sur ma propre réponse. Les guillemets à l'intérieur de l' ${} ne correspondent pas avec les guillemets à l'intérieur. Les deux variables ne sont pas à l'extérieur de la cite.
  • vous avez raison.
  • connexes: superuser.com/questions/422459/...