/bin/sh -c '...'で16進数または10進数のASCII文字を印刷する方法は?

/bin/sh -c '...'で16進数または10進数のASCII文字を印刷する方法は?

/bin/sh は dash printf です。ダッシュで16進またはdexコードを使用して特定のASCII文字を表示する正しい構文は何ですか?ドル記号($)を印刷したいとしましょう。どの16進または10進コードを使用し、どのように使用する必要がありますか?

答え1

文字コードから文字自体に移動するには、printf書式文字列に文字コードを含めてバックスラッシュでエスケープします。8進数

たとえば、printf "\044\n"印刷$(および改行)です。

Bashや他のシェルでは16進数を使用できますが、\x24これは標準ではなくDashでは機能しません。

ただし、printfコマンド置換内に他のコマンドを入れ子にして、16進数または10進数を8進数に変換できます。どちらも印刷$(および改行)されます。

printf "\\$(printf %o 36)\n"
printf "\\$(printf %o 0x24)\n"

関連情報