1

在一个 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
4

2 回答 2

0

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

printf '%03x\n' $(( ${variable//,/+} ))
于 2013-09-13T07:16:03.563 回答
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
于 2013-09-13T07:19:26.870 回答