Pergunta no script bash

1

Estou escrevendo um script simples para mostrar informações do sistema. Aqui está o meu código:

#!/bin/bash
hostn=$(hostname)
system=$(uname -a)
cpu=$(cat /proc/cpuinfo | grep "model name" | cut -d : -f 2)
disk=$(df -h | grep -v "tmpfs" | awk '{print $1 "  " $4}')

printf -v serverinfo "Hostname:\t%s\nCPU:\t%s\nDisk:\t%s\nSystem:t%s\n" $hostn $cpu $disk $system
echo "$serverinfo"

O resultado exibido está no formato incorreto:

Hostname:       KASH1LFCE01
CPU:    Intel(R)
Disk:   Xeon(R)
System:tCPU
Hostname:       E5-2650
CPU:    v3
Disk:   @
System:t2.30GHz
Hostname:       Filesystem
CPU:    Avail
Disk:   /dev/sdc
System:t12G
Hostname:       /dev/sda1
CPU:    431M
Disk:   Linux
System:tKASH1LFCE01
Hostname:       2.6.32-642.1.1.el6.x86_64
CPU:    #1
Disk:   SMP
System:tTue
Hostname:       May
CPU:    31
Disk:   21:57:07
System:tUTC
Hostname:       2016
CPU:    x86_64
Disk:   x86_64
System:tx86_64
Hostname:       GNU/Linux
CPU:
Disk:
System:t

As informações da CPU são impressas em linhas diferentes e iguais às informações uname -a.

    
por FELASNIPER 26.01.2017 / 00:43

1 resposta

2

Cite as variáveis, caso contrário, os espaços farão com que elas sejam divididas em argumentos separados.

printf -v serverinfo "Hostname:\t%s\nCPU:\t%s\nDisk:\t%s\nSystem:\t%s\n" "$hostn" "$cpu" "$disk" "$system"

Você geralmente deve citar suas variáveis o tempo todo, exceto quando você sabe que precisa delas para serem divididas em palavras.

    
por 26.01.2017 / 00:52

Tags