¿Cómo consigo que printf genere caracteres hexadecimales cuando lo ejecuto desde un script?
Supongamos que estoy en el indicador y escribo imprimirf "\x41\x42"el resultado que obtengo
AB%
Sin embargo, si tengo un script que contiene esa línea, es decir, cat test.sh
produce
printf "\x41\x42"
Pero ejecutando el script./prueba.shproduce
\x41\x42%
¿Cómo consigo que el script produzca los mismos resultados que desde el símbolo del shell?
Respuesta1
Intente utilizar la printf
utilidad externa:
/usr/bin/printf "\x41\x42"
Probablemente tenga un bash
shell, pero como shell interactivo, mientras sh
está vinculado a dash
.
El dash
integrado printf
no lo sabe \xNN
, por lo que debe usar valores octales \0NN
en su lugar.
El bash
integrado printf
sí lo sabe.\xNN