スクリプトコマンドで16進文字をprintfに渡すには? [コピー]

スクリプトコマンドで16進文字をprintfに渡すには? [コピー]

スクリプトで実行するときにprintfに16進文字を出力させるにはどうすればよいですか?

プロンプトに入力するとします。 printf "\x41\x42"私が得た結果

 AB%

cat test.shただし、次の行を含むスクリプトがある場合

printf "\x41\x42"

しかし、スクリプトを実行すると./test.sh生産する

\x41\x42%

スクリプトがシェルプロンプトと同じ結果を生成するにはどうすればよいですか?

答え1

外部printfユーティリティを試してください。

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

シェルがあるかもしれませんが、bash対話型シェルとしてwhileshdash

dash組み込み関数はprintfこれを知らないので、\xNN代わりに8進数値を使用する必要があります\0NN

内臓は知っbashているprintf\xNN

関連情報