Estou tentando encontrar uma maneira de arredondar alguns números.
O tópico que encontrei: https://stackoverflow.com/questions/2395284/round-a-divided-number-in-bash
Estou usando o seguinte comando no meu script bash.
livre -h | gawk '/Mem:/{print $2}' | awk 'FNR == 1 {imprime $1 "B"}')
O código a seguir me mostrará quanta memória total eu instalei. Atualmente, estou recebendo 3,7 GB. O problema é que preciso arredondar para 4 GB.
Eu tenho um script que solicita várias informações à minha máquina e ecoa tudo. (Prolly deveria usar algo diferente, mas ainda não tentei mais nada, pois este é um dos meus projetos em que estou trabalhando.
memory=$(free -h | gawk '/Mem:/{print $2}' | awk 'FNR == 1 {print $1 "B"}')
echo $memória
No momento, o eco está fora de 3,7 GB, conforme mencionado abaixo. Eu tentei de maneiras diferentes, mas não consigo chegar a 4 GB.
Você poderia fazer algo como:
(
LC_ALL=C
para garantir que os números sejam impressos usando a.
raiz decimal (3,7G seria gerado como 3,7G em localidades usando vírgula como a raiz decimal)).Em sistemas GNU/Linux, você também pode fazer:
Ou:
(aquele lidando com localidades onde a raiz decimal não é
.
).Observe que
free
no Linux relata esseMemTotal
campo de /proc/meminfo. De acordo com proc(5), essa é a RAM utilizável total (isto é, RAM física menos alguns bits reservados e o código binário do kernel) . Para a RAM física e para PCs, conforme apontado por @StephenKit, pode ser melhor usardmidecode
para obter as informações do BIOS, embora precise de privilégios de superusuário para isso:Se você quiser arredondar para 2 casas decimais, aqui estão alguns exemplos simples: