¿Cómo paso caracteres hexadecimales a printf en un comando de script?

¿Cómo paso caracteres hexadecimales a printf en un comando de script?

¿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.shproduce

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 printfutilidad externa:

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

Probablemente tenga un bashshell, pero como shell interactivo, mientras shestá vinculado a dash.

El dashintegrado printfno lo sabe \xNN, por lo que debe usar valores octales \0NNen su lugar.

El bashintegrado printfsí lo sabe.\xNN

información relacionada