Ваш синтаксис неверен. У вас могут быть и другие проблемы с кодом, но это сообщение, скорее всего, вызвано тем, что вы не можете использовать ключевое слово do
как блок; вам необходимо иметь одно из условий цикла.
В настоящее время у вас есть:
*)
do
test -n '$folder' && echo You chose: $REPLY\) $folder && break;
echo 'Wrong entry, try again.';
continue;
done;
;;
Вам не хватает ключевого слова for
, while
или until
для начала цикла.
Я не тестировал, но думаю, это как-то связано с тем, что вы загружаете bc mathlib с помощью bc -l
.
Попробуйте изменить часть вычисления awk
для ГБ на:
awk '{byte = $ 1/1024/1024/1024; print byte "GB"} '
Примечание: 1024/1024 ** 2
эквивалентно 1024/1024/1024
в awk
.
> printf "1GiB\\nMB" | units
Currency exchange rates from finance.yahoo.com on 2017-10-31
3047 units, 109 prefixes, 109 nonlinear units
You have: You want: * 1073.7418
/ 0.00093132257
You have:
или
> echo $((1024*1024*1024))
1073741824
>
См. также:человек 7 ед.
ХТХ
Поскольку это Linux, я удивлен, что -никто не упомянул команду numfmt
:
numfmt - Convert numbers from/to human-readable strings
>>numfmt --to iec --format "%8.4f" 599511627776
558.3388G
Сделал для этого небольшой кли.
https://github.com/gonejack/hsize
> hsize 123 45678
123 => 123B
45678 => 44.61KB
> echo 19129219219129119 | hsize
19129219219129119 => 16.99PB