我使用printf命令在我的文件中添加一些字节,这样它就像一个Byte-Order-Mark。
以下是我的SH脚本
标题: add_bom.sh
FILE=$1
printf '\xFF\xFE' >> $1在我的PuTTY终端上,当我直接
printf '\xFF\xFE' >> test.xls结果如预期的那样正确,xxd test.xls在第一行显示ff和fe
但是,当我通过SH运行它时
sh add_bom.sh test.xls结果是错误的,\xFF\xFE作为文本出现在test.xls文件的末尾
为什么会这样呢?
发布于 2019-02-13 14:53:08
>>重定向运算符始终附加到文件的末尾。
如果您想预先添加,可以尝试类似这样的方法
printf '\xff\xfe' >temp
cat otherfile >>temp
mv temp otherfile但是,将UTF-16 BOM添加到最初不是UTF-16文本文件的文件中几乎肯定是错误的。
https://stackoverflow.com/questions/54664033
复制相似问题