сценарий printf на консоли vs sh - PullRequest
0 голосов
/ 13 февраля 2019

Я использую команду 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 в виде текста

Почему это так?так?

1 Ответ

0 голосов
/ 13 февраля 2019

Оператор перенаправления >> всегда добавляется в конец файла.

Если вы хотите добавить в начало, попробуйте что-то вроде

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

Однако добавьте спецификацию UTF-16для файла, который не является текстовым файлом UTF-16, это почти наверняка ошибка.

...