使用可以包含特殊字符的变量进入 sed?

使用可以包含特殊字符的变量进入 sed?

我有一个 bash 脚本,它将接收传递给它的任何单词作为参数,然后使用 openssl 命令加密该单词。从那里,我想获取返回的字符串并使用 sed 将其写入另一个文件。加密值有时包含“/”字符(但并非总是如此),此时 sed 无法运行。

脚本的要点如下:

#!/bin/bash

fileDirectory"/etc/ci"
fileName="key.bin"

encryptedOSPFPW='echo $1 | openssl enc -a -A -aes-256-cbc -md sha256 -pass file:"$fileDirectory"/"$fileName"'

sed -i "s/OSPFPW/$encryptedOSPFPW/g" /etc/quagga/ospfd.conf

exit 0

我如何调整 sed 命令,以便它将返回的内容替换为字面内容。我知道,如果我用单引号替换双引号,sed 将按字面意思接受提供给它的所有内容,但当我使用变量时,这不起作用。

谢谢

答案1

这个问题的答案是在 sed 命令中使用不同的分隔符。我最终使用了以下命令:

sed -i "s|OSPFPW|$encryptedOSPFPW|g" /etc/quagga/ospfd.conf

相关内容