![Как передать шестнадцатеричные символы в printf в команде скрипта?](https://rvso.com/image/231049/%D0%9A%D0%B0%D0%BA%20%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%82%D1%8C%20%D1%88%D0%B5%D1%81%D1%82%D0%BD%D0%B0%D0%B4%D1%86%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D1%87%D0%BD%D1%8B%D0%B5%20%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D1%8B%20%D0%B2%20printf%20%D0%B2%20%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%B5%20%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B0%3F%20.png)
Как заставить 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
, .
Встроенный знаетbash
printf
\xNN