Eu preciso pegar a saída do comando e torná-lo o nome de um arquivo usando um script [duplicado]

3

Estou trabalhando em uma maneira de integrar nossas máquinas Linux em nossos relatórios SCCM. Uma das coisas que gostaríamos de fazer é verificar o tamanho da troca nas máquinas.

Eu sei que posso obter o valor de swap na máquina executando

cat /proc/meminfo | grep SwapTotal

Infelizmente, o SCCM não pode executar esses comandos, mas o nosso administrador do SCCM diz que, se eu puder criar um arquivo em uma pasta, ele poderá ler esse arquivo no relatório, desde que tenha uma finalização especial.

Eu gostaria de obter as informações desse comando e canalizá-las para o nome do arquivo, portanto, se a troca fosse 6000, o arquivo seria chamado 6000.swap

Alguém pode me apontar na direção de onde posso encontrar como fazer isso?

Obrigado!

    
por Ty Button 16.12.2015 / 15:47

3 respostas

7

Se a única coisa que importa é o nome do arquivo resultante:

rm -f *.swap
touch "$(awk '/SwapTotal/ { print $2 }' /proc/meminfo).swap"

Se você precisar da linha SwapTotal no arquivo:

rm -f *.swap
swap="$(awk '/SwapTotal/ { print $2 }' /proc/meminfo)"
grep SwapTotal /proc/meminfo > "${swap}.swap"

ou em um comando (graças a Archemar para a dica):

rm -f *.swap
awk '/SwapTotal/ { print $0 > $2 ".swap" ;}' /proc/meminfo
    
por 16.12.2015 / 15:52
2

Você pode fazer algo tão simples quanto

touch /path/to/file/$(cat /proc/meminfo | grep SwapTotal | awk '{print $2}').swap

    
por 16.12.2015 / 15:52
1

Você poderia fazer assim:

touch 'awk '/SwapTotal/ { print $2 }' /proc/meminfo'.swap
    
por 16.12.2015 / 21:02