Я использую du
для получения размера файла результирующего архива в скрипте упаковщика:
> du -smh archive.zip
51M archive.zip
Я хотел бы присвоить 51M
переменной только эту часть, чтобы можно было распечатать:
Archive size: 51M
Как мне это сделать?
решение1
Сделать это можно так:
$ variable=$(du -smh archive.zip | awk '{print $1}')
Подробности
awk
проанализирует вывод, разбив его на столбцы. Вам нужны только результаты из столбца № 1. Код $( .. ) выполнит команду и вернет ее результаты.
решение2
Или используйте stat
программу, если она доступна (обычно по умолчанию в Linux). Нет понятного человеку преобразования K/M/G, но и не требуется ничего больше, чтобы получить только число / есть удобные параметры форматирования:
sauer@humpy:~$ stat -c "%s" /etc/passwd
2302
sauer@humpy:~$ stat -c "%n size: %s bytes" /etc/passwd /etc/shadow
/etc/passwd size: 2302 bytes
/etc/shadow size: 1389 bytes
решение3
Awk — молоток большего размера, чем вам нужно, используйте нож и режьте,
variable=$(du -smh archive.zip | cut -f1 )