Когда я храню большие значения в скрипте оболочки и загружается в переменную busybox, он печатает значения -ve.
Я знаю, что оболочка не имеет типа переменной, но тогда как мне избежать этого откидывания назад к значениям -ve?
Я использовал ниже командные команды в оболочке, и он печатает значение -ve.Как хранить большие значения в переменной скрипта оболочки
# let b=3841982464
# echo $b
-452984832
Любое предложение/указатель?
EDIT:
Ответ предложил agilob работает на мой оригинальный вопрос, но моя фактическая проблема, я был последним, чтобы перейти к концу диска - 17KB Поэтому я использовал команду следующего
# b=$(($(blockdev --getsize64 /dev/mmcblk0) - $((17*1024))))
# echo $b
-453002240
Так до сих пор значение распечатывается -ve :(, используя выражение также дает фантастический результат следующим
# b=`expr $(blockdev --getsize64 /dev/mmcblk0) - 17408`
# echo $b
2147466239
Ответ на актуальной проблемой
сек o Ответ на оригинальный вопрос ответил agilob, поэтому я принял этот ответ. И текущая проблема, которую я мог бы решить, как следует,
# b=$(blockdev --getsize64 /dev/mmcblk0)
# echo $b
3841982464
# echo "$b 17408 - p" | dc
3841965056
AWK путь
Я попытался сделать это в AWK, как user1934428 предложил, это может быть сделано следующим образом,
# echo "$(blockdev --getsize64 /dev/mmcblk0) 17408" | awk '{ printf "%.0f", $1 - $2}'
3841965056#
Omg Я думал, что это так же, как 'let b = 3841982464'. Спасибо. Btw В чем разница? – AnkurTank
хорошо над решением работает. Но если я использовал его следующим образом: b = $ (($ (blockdev --getsize64/dev/mmcblk0) - $ ((17 * 1024)))) 'it prints' # echo $ b' '-453002240', Вы предлагаете использовать expr? – AnkurTank
'let' оценивает выражение, пусть a = 1-1; echo $ a; будет печатать 0. Пожалуйста, примите ответ, если вы не возражаете;) – agilob