好的,我尝试制作一个循环,将变量从 0 增加到 FF(0x00 到 0xFF 也可以):
...
declare -i register=0
while [ 255 -ge $register ]
do
sudo mono ec-probe.exe read 0x+$register
register=$register+1
done
...
这可行,但我怎样才能使循环从 0 运行到 FF?是否有可能使用十六进制变量?
诚挚的 Stefan
答案1
bash 会将变量存储为十进制整数,但您可以将其与十六进制常量进行比较。如果要将数字格式化为十六进制,则必须明确转换:
for ((register = 0; register <= 0xff; register++)); do
printf -v hex %x $register
echo "$register $hex"
done
输出
0 0
1 1
2 2
...
253 fd
254 fe
255 ff
答案2
您已成功创建一个显示从 0 到 255 的值的循环……现在您需要将十进制值格式化为十六进制。
printf
这样做没有问题:
$ printf '0x%02X\n' 128
0x80
将其与您现有的命令配对,如下所示:
mono ec-probe.exe read $(printf '0x%02X' ${register})