Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 控制台上的printf与sh脚本_Bash_Unix_Printf_Solaris - Fatal编程技术网

Bash 控制台上的printf与sh脚本

Bash 控制台上的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

我使用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以文本形式出现在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
以查找。)