我不熟悉shell脚本。我正在使用十六进制值并编写一个简单的脚本来进行减法。这是我的剧本:
#!/bin/bash
var1=“0x0001”
var2=“0x0005”
var3=“$(( 16#$var2 - 16#$var1 ))”
echo “Diference $var3”
我得到这个错误:
line 6: 16#?: value too great for base (error token is "16#?")
你能告诉我我的错误在哪里吗?
最佳答案
$ var1=0x0001
$ var2=0x0005
$ var3=$(( $var2 - $var1 ))
$ echo "Diference $var3"
Diference 4
指定不带双引号的十六进制值(即不作为字符串)。
因为您已经放置了一个
0x
,所以不需要16#
要将答案转换回十六进制,可以使用:
printf '%x' $num
下面是一个例子:
$ var1=0x19
$ var2=0xA
$ var3=$(( $var1 - $var2 ))
$ echo $var3
15
$ printf '%x\n' $var3
f
$ var3=$(printf '%x' $var3)
$ echo $var3
f
关于linux - Shell脚本:值对于基数太大(错误 token 为“16#?”),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37406245/