控制台上的printf vs sh脚本

时间:2019-02-13 06:37:48

标签: bash unix printf solaris

我正在使用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文件的末尾

为什么会这样?

1 个答案:

答案 0 :(得分:3)

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

如果您想添加,请尝试

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

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