我要将两个数字作为字符串检索到变量A和B中:
A将采用以下形式:
“10”或“0x0A”或“0x0a”
换句话说,A将是十进制或十六进制数字(带有0x前缀)。
B将采用以下形式:
“image-000A”或“image-000a”
B将始终为“image-”,后跟4个十六进制数字。
我需要比较两个数值并测试B> A.如何在shell脚本中执行此操作?
答案 0 :(得分:2)
您只需将十六进制数乘以1即可将十六进制数转换为十进制数。
rojo@pico:~$ t=0x0a
rojo@pico:~$ echo $t
0x0a
rojo@pico:~$ echo $(( $t * 1 ))
10
从图像中刮取十六进制值稍微复杂一些,但仍然以相同的方式工作。
rojo@pico:~$ t=image-000a
rojo@pico:~$ echo $t
image-000a
rojo@pico:~$ echo $(( 0x${t##image-} * 1 ))
10
从${t##image-}
image-
$t
开始000a
,离开{{1}}。