Как передать шестнадцатеричные символы в printf в команде скрипта?

Как передать шестнадцатеричные символы в printf в команде скрипта?

Как заставить printf выводить шестнадцатеричные символы при запуске из скрипта?

Предположим, я нахожусь в командной строке и печатаю printf "\x41\x42"вывод, который я получаю

 AB%

Однако, если у меня есть скрипт, содержащий эту строку, то он cat test.shвыдает

printf "\x41\x42"

Но выполнение сценария./test.shпроизводит

\x41\x42%

Как сделать так, чтобы скрипт выдавал те же результаты, что и в командной строке?

решение1

Попробуйте использовать внешнюю printfутилиту:

/usr/bin/printf "\x41\x42"

У вас, вероятно, есть bashоболочка, но поскольку ваша интерактивная оболочка shсвязана с dash.

dashВстроенная функция не printfзнает \xNN, поэтому вместо этого вам придется использовать восьмеричные значения, \0NN, .

Встроенный знаетbashprintf\xNN

Связанный контент