0

我正在使用 printf 命令在我的文件上添加一些字节,以便它像字节顺序标记一样起作用。

以下是我的 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 文件的末尾

为什么会这样?

4

1 回答 1

3

>>重定向运算符始终附加到文件的末尾。

如果你想预先,尝试类似

printf '\xff\xfe' >temp
cat otherfile >>temp
mv temp otherfile

但是,将 UTF-16 BOM 添加到首先不是 UTF-16 文本文件的文件几乎肯定是错误的。

于 2019-02-13T06:53:07.873 回答