Problema com a variável read do AWK

4

Estou tentando obter informações de memória por este comando:

#!/bin/bash
set -x
cat /proc/meminfo | grep "MemFree" | tail -n 1 | awk '{ print $2 $4 }' | read numA numB
echo $numA

Estou recebendo isso

+ awk '{ print $2 $4 }'
+ read numA numB
+ tail -n 1
+ grep MemFree
+ cat /proc/meminfo
+ echo

Minhas tentativas de ler esses dados para variáveis não tiveram sucesso. Minha pergunta é como eu posso ler isso para variáveis? Eu quero ler quantas memória é livre como: 90841312 KB

    
por Tesly 21.08.2014 / 20:13

2 respostas

4

Você pode usar read e simplesmente fazer o seguinte

while read -r memfree
  do printf '%s\n' "$memfree"
  done < <(awk -F: '/MemFree/{print $2}' /proc/meminfo)
    
por 21.08.2014 / 20:25
3

Tente salvar valores únicos diretamente em cada variável. Você também pode remover o cat e o tail pipe usando o -m flag com grep :

numA=$(grep -m 1 "MemFree" /proc/meminfo | awk '{ print $2 }')
numB=$(grep -m 1 "MemFree" /proc/meminfo | awk '{ print $3 }')

echo $numA $numB
    
por 21.08.2014 / 20:23