添加变量值并在shell脚本中转​​换为十六进制

时间:2013-09-13 07:09:45

标签: shell sh

在shell脚本中 我有很多系列

11 10 9 8 7 6 5 4 3 2 1 0
(8 4 2 1,8 4 2 1,8 4 2 1) on this bases 
the maximum value is "f"

所以,如果我给予值

variable=3,2,1

它应该返回(0,0,8 + 4 + 2 = 14表示e)

e
0e
00e

如果我给出值(0,8 + 4 + 2 = 14表示e,0)

varible=8,7,6

它应该返回

e0
0e0

如果我给出值

varible=11,10,9

它应该返回(8 + 4 + 2 = 14表示e,0,0)

e00

2 个答案:

答案 0 :(得分:0)

您可以使用参数扩展来用逗号替换逗号。然后,使用算术扩展来进行计算。最后,使用printf进行转换并格式化输出:

printf '%03x\n' $(( ${variable//,/+} ))

答案 1 :(得分:0)

使用awk:

awk -v RS=, '{s+=$1} END{printf "%02x\n", s}' <<< "$variable"
0e

编辑:如果不使用bash则:

echo "$variable" | awk -v RS=, '{s+=$1} END{printf "%02x\n", s}'
0e