16進数を10進数に変換してASCIIに変換し、変数に保存しようとしています。次のコードを使用しています。
HEX=30
DEC=`printf "%d\n" 0x${HEX}`
echo "$DEC"
ASC=`printf \\$(printf '%03o' $DEC)`
echo "$ASC"
次のエラー構文エラーが発生します。
`(' unexpected
私はSolaris 10を使用しており、ksh
ASCII関数を使用して値を保存したくありません。関数を使用せずにこれを実行できるようにしたいです。
答え1
$
誤って2回エスケープすると、代わりに置き換えられた内部printfの結果が表示されますprintf
(printf \$( ...
必要なものとします)。これを行うには、ステートメント全体を次のように単純化できます。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進数に変換する必要があります。