Новый скрипт bash

Я новичок в сценариях bash и пишу простой скрипт bash для отображения системной информации. Вот мой код:

#!/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" 

Отображаемый результат находится в неправильном формате:

 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 

Информация о процессоре печатается в разных строках и совпадает с информацией uname -a.

Перечислите переменные, иначе пробелы заставят их разбить на отдельные аргументы.

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

Вы обычно должны указывать свои переменные все время, за исключением случаев, когда вы знаете, что вам нужно, чтобы их разделили на слова.