変数にASCII値を格納できません。

変数にASCII値を格納できません。

16進数を10進数に変換してASCIIに変換し、変数に保存しようとしています。次のコードを使用しています。

HEX=30
DEC=`printf "%d\n" 0x${HEX}`
echo "$DEC"
ASC=`printf \\$(printf '%03o' $DEC)`
echo "$ASC"

次のエラー構文エラーが発生します。

`(' unexpected

私はSolaris 10を使用しており、kshASCII関数を使用して値を保存したくありません。関数を使用せずにこれを実行できるようにしたいです。

答え1

$誤って2回エスケープすると、代わりに置き換えられた内部printfの結果が表示されますprintfprintf \$( ...必要なものとします)。これを行うには、ステートメント全体を次のように単純化できます。ASC=$(printf '%03o' $DEC)

答え2

私の文法エラーを修正してくれたJeff Schallerに感謝します。私の問題に対する解決策が見つかりましたが、これはSolaris 10で動作します。

script:

#!/bin/ksh
HEX=30
DEC=`printf "%d\n" 0x${HEX}`  ##Converted Hex to decimal
echo "$DEC"
OCT=$(printf '%o' $DEC)   ##Converted decimal to octal
echo "$OCT"
ASCI=$(printf \\$OCT)  ##Finally converted OCTAL to ASCII.
echo "$ASCI"

output:

48
60
0

もちろん、ASCIIで印刷する前に、10進数を8進数に変換する必要があります。

関連情報