$RECORD_HDR
문자열을 숫자로 변환하고 싶습니다 $RECORD_SIZE
.
echo $RECORD_HDR
003D를 제공하고
echo $RECORD_SIZE
61을 제공해야 합니다.
답변1
bash
매뉴얼 에서 :
0으로 시작하는 상수는 8진수로 해석됩니다. 앞에 0x 또는 0X가 있으면 16진수를 나타냅니다.
그러므로:
$ RECORD_HDR="003D"
$ RECORD_SIZE=$((0x$RECORD_HDR))
$ echo "$RECORD_SIZE"
61
답변2
이를 수행하는 방법에는 여러 가지가 있습니다.
bc
계산기를 사용하여 입력 기준을 명시적으로 설정합니다(매우 이식 가능).
RECORD_SIZE=`echo "ibase=16;$RECORD_HDR" | bc`
명시적 기반을 사용하여 산술 평가를 사용합니다(적어도 ksh 및 bash - 이 구성이 얼마나 이식 가능한지는 잘 모르겠습니다).
RECORD_SIZE=$((16#$RECORD_HDR))
답변3
awk를 사용할 수 있습니다.벨벳 도서관:
$ velour -n 'print mt_basecon("3D", 16, 10)'
61
또는:
$ velour -n 'print mt_basecon(ARGV[1], 16, 10)' 3D
61