变量XFILEBASE64包含Base64编码的内容,我希望能用这个Base64内容替换掉一些字符串。
很明显,Base64中包含特殊字符,我尝试使用$'\001'作为分隔符,但仍然出现错误提示。有什么建议吗?
XFILEBASE64=`cat ./sample.xml | base64`
cat ./template.xml | sed "s$'\001'<Doc>###%DOCDATA%###<\/Doc>$'\001'<Doc>${XFILEBASE64}<\/Doc>$'\001'g"
> sed: -e expression #1, char 256: unterminated `s' command
编辑:看起来问题与sed无关,必须隐藏在base64操作中。
sample.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<a>testsdfasdfasdfasfasdfdasfdads</a>
重现问题的步骤:
foo=`base64 ./sample.xml`
echo $foo | base64 --decode
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<base64: invalid input