На хинду этот пакет является отдельным и назван media-plugins/gst-plugins-x264
POSIXly вы можете получить десятичное значение шестнадцатеричного числа типа:
hex=10
echo "$((0x$hex))"
16
И вам действительно не нужно делать все эти [
тесты ]
. Я думаю, что должно сработать:
case $f7 in
(EnHr|EnSt|SpJb|Chem|[BT]rTm|PmTm|HyTm)
printf "\t\t\t\t\t%s%b" \
"HEX VALUE is" ":\t$f10" \
'' "inside case loop.\t\t" \
Sen ":\t$f7" \
Val ":\t$((!(inside+=1)|0x$f10))"
esac
Стандарт по ошибке исходит из bc
. Он ожидает шестнадцатеричные значения в верхнем регистре. Поэтому вместо 0019c4ef
нужно передать его 0019C4EF
.
Преобразование шестнадцатеричного числа в десятичное можно сделать, используя без bc
- смотрите этот ответ https://stackoverflow.com/a/13280173/3935925
По обоим вопросам ошибка пришла из bc
.
0019c4ef
является недействительным шестнадцатеричным номером в bc, для действительного шестнадцатеричного номера нужен 0019C4EF
:
echo "ibase=16; 0019C4EF" | bc
1688815
Поскольку вы использовали bash
(также работает в ksh
, zsh
, mksh
, pdksh
, posh
), можно использовать [основание#]n
, где основание - десятичное число от 2 до 64:
$ echo "$((16#0019c4ef))"
1688815
В вашем случае просто удалите строку назначения, используя bc
, и отредактируйте следующую строку:
echo -e "\t\t\t\t\tinside the if loop\tSen: $f7\tVal: " "$((16#$f10))"