我有一个 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