Что я сделал не так?
Вы использовали арифметическое расширение $(( ... ))
вместо подстановки команд $( ... )
. В результате оболочка интерпретировала /bin
как /
как деление и bin
как 0
(потому что нет переменной с именем bin
) и пыталась разделить на 0.
Какя могу поместить это значение в переменную?
Используйте подстановку команд:
x=$(du -h /bin/ip | cut -d "K" -f1)
Но было бы гораздо надежнее использовать stat для сбора информации о файлах:
x=$(stat -c %s /bin/ip)
Чтобы вычесть два размера файла, вы можете снова использовать подстановки команд, чтобы получить размер, но использовать арифметическое расширение, чтобы вычислить разницу.
difference=$(( $(stat -c %s file1) - $(stat -c %s file2) ))