我使用printf命令在我的文件上添加一些字节,使其像字节顺序标记一样。
以下是我的SH脚本
title: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文件的末尾
为什么会这样呢?
>>
重定向运算符始终附加到文件的末尾。
如果你想要前置,尝试类似的东西
printf '\xff\xfe' >temp
cat otherfile >>temp
mv temp otherfile
但是,首先将UTF-16 BOM添加到不是UTF-16文本文件的文件几乎肯定是错误的。