![Bash 스크립트의 문제](https://linux55.com/image/103996/Bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98%20%EB%AC%B8%EC%A0%9C.png)
시스템 정보를 표시하기 위해 간단한 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
CPU 정보는 uname -a 정보와 동일하게 별도의 줄에 인쇄됩니다.
답변1
변수를 인용하세요. 그렇지 않으면 공백으로 인해 변수가 별도의 매개변수로 분할됩니다.
printf -v serverinfo "Hostname:\t%s\nCPU:\t%s\nDisk:\t%s\nSystem:\t%s\n" "$hostn" "$cpu" "$disk" "$system"
일반적으로 변수를 단어로 분할해야 한다는 것을 알지 않는 한 항상 변수를 인용해야 합니다.