Попробуйте что-нибудь в этом роде:
while read firstname lastname
do
fullname="$firstname $lastname"
uname=$(echo ${firstname:0:1}${lastname:0:4} | tr '[:upper:]' '[:lower:]')
echo $fullname $uname
done < newemploy.txt
Страница руководства вверху
говорится:
2c. Использование ПАМЯТИ
Эта часть состоит из двух строк, которые могут выражать значения в кибибайтах (KiB) через exbibytes (EiB) в зависимости от коэффициента масштабирования, установленного с помощью интерактивной команды 'E'.
Он также содержит определения кибибайтов, которые обсуждаются в этом ответе суперпользователя .
На странице справочника для free
указано, что он сообщает в килобайтах / мегабайтах, но на самом деле он сообщает в кибибайтах, если вы не добавите флаг - si
.
Чтобы ответить на ваш вопрос, я считаю, что причина top
сообщает 8191488k, а free -m
сообщает 7999m, заключается в том, что 8191488 делится на 1024 и получается 7999,5. Единицы масштабируются в степени 1024, а не в степени 1000.
Смотрите k
после каждого числа? Килобайт. (Это также значение по умолчанию для бесплатно
, если вы не укажете -m
.)