printf on console vs sh script

问题描述 投票:0回答:1

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

为什么会这样呢?

bash unix printf solaris
1个回答
3
投票

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

如果你想要前置,尝试类似的东西

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

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

© www.soinside.com 2019 - 2024. All rights reserved.