Итак, я попытался сделать цикл, который увеличивает переменную от 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? Есть ли возможность для шестнадцатеричной переменной?

С уважением Стефан

2 ответа2

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
0

Вы успешно создали цикл, который представляет значения от 0 до 255 ... теперь вам нужно отформатировать десятичные значения как шестнадцатеричные.

printf сделает это без проблем:

$ printf '0x%02X\n' 128
0x80

Соедините это с вашей существующей командой следующим образом:

mono ec-probe.exe read $(printf '0x%02X' ${register})

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .