我正在使用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文件的末尾
为什么会这样?
答案 0 :(得分:3)
>>
重定向运算符始终附加在文件末尾。
如果您想添加,请尝试
printf '\xff\xfe' >temp
cat otherfile >>temp
mv temp otherfile
但是,首先将UTF-16 BOM添加到不是UTF-16文本文件的文件中几乎可以肯定是错误的。