在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
答案 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