Bash 控制台上的printf与sh脚本
我使用printf命令在我的文件中添加一些字节,这样它就像一个字节顺序标记 下面是我的SH脚本 标题:添加_bom.shBash 控制台上的printf与sh脚本,bash,unix,printf,solaris,Bash,Unix,Printf,Solaris,我使用printf命令在我的文件中添加一些字节,这样它就像一个字节顺序标记 下面是我的SH脚本 标题:添加_bom.sh FILE=$1 printf '\xFF\xFE' >> $1 在我的油灰终端上,当我直接 printf '\xFF\xFE' >> test.xls 结果与预期一样正确,xxd test.xls在第一行显示ff和fe 但是,当我通过SH运行它时 sh add_bom.sh test.xls 结果是错误的,并且\xFF\xFE以文本形式出现在t
FILE=$1
printf '\xFF\xFE' >> $1
在我的油灰终端上,当我直接
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文本文件的文件中几乎肯定是一个错误。重定向操作符总是附加到文件的末尾 如果你想提前结束,可以尝试以下方法
printf '\xff\xfe' >temp
cat otherfile >>temp
mv temp otherfile
但是,将UTF-16 BOM添加到最初不是UTF-16文本文件的文件中几乎肯定是一个错误。重定向将附加到文件,即添加文件中最后一个输出。此外,将BOM表添加到二进制文件(如
.xls
)可能只会使Excel无法读取该文件;这是正确的吗?如果是,是什么版本?另外,sh
实际运行的是什么?(尝试哪个sh
和键入sh
来查找。)
重定向附加到文件,即它将输出添加到文件的最后一个。此外,将BOM添加到二进制文件(如.xls
)可能只会使Excel无法读取该文件。您的标记表明这是在Solaris上的;这是正确的吗?如果是,是什么版本?另外,sh
实际运行的是什么?(请尝试哪个sh
并键入sh
以查找。)