В конечном итоге моя цель - преобразовать шестнадцатеричный дамп данных в правильное значение с плавающей запятой. Я настроил свой сценарий оболочки, чтобы изолировать отдельные шестнадцатеричные значения, которые мне нужно посмотреть, и упорядочить их в правильном порядке для небольшого преобразования с плавающей запятой Endian.
Чтобы все упростить, я обойду код, который мне удалось заставить работать, и начну с:
rawHex=0x41000000
echo $(perl -e 'print unpack "f", pack "L", $ENV{rawHex}')
Когда я выполняю этот код, результат равен 0. Однако, если бы я выполнил код, не пытаясь получить значение переменной оболочки:
echo $(perl -e 'print unpack "f", pack "L", 0x41000000')
Результат 8, чего я и ожидаю.
Я был бы признателен за любую помощь в том, как я могу обновить свое выражение Perl, чтобы правильно интерпретировать значение переменной оболочки. Спасибо.
%ENV
. Вам нужно экспортировать его,export rawHex=...
(или простоexport rawHex
, если он уже настроен). Теперь он будет у%ENV
. (В качестве альтернативы вы можете передать его в свою программу командной строки Perl в качестве аргумента командной строки или переключателя) - person zdim   schedule 14.11.2019echo $(perl -e 'print $ENV{rawHex}')
, и результат был 0x41000000, как и ожидалось. - person Dan   schedule 14.11.2019