Bash脚本:如何从变量中提取一些值?

时间:2019-07-15 19:32:49

标签: bash

我想创建一个Bash别名以显示系统信息(类似于screenfetch或neofetch,但较轻)。 当前的代码是:

function info {
echo
kernel=$(uname -s -r)
echo $kernel"."
echo
packages=$(pacman -Qq | wc -l)
echo $packages "packages."
echo
df /dev/mmcblk1p2 -h
echo
sensors coretemp-isa-0000 -A
}

结果是:

Linux 5.2.0-arch2-1-ARCH.

927 packages.

Filesystem      Size  Used Avail Use% Mounted on
/dev/mmcblk1p2   57G   26G   29G  48% /

coretemp-isa-0000
Package id 0:  +46.0°C  (high = +105.0°C, crit = +105.0°C)
Core 0:        +46.0°C  (high = +105.0°C, crit = +105.0°C)
Core 1:        +46.0°C  (high = +105.0°C, crit = +105.0°C)
Core 2:        +45.0°C  (high = +105.0°C, crit = +105.0°C)
Core 3:        +45.0°C  (high = +105.0°C, crit = +105.0°C)

我想将df和sensors输出的一部分加载到另一个变量中。

对于df:我要提取Size,Used,Avail和Use%的值以显示:磁盘具有$ disk_size。已使用$ disk_percent($ used)。 $ disk_avail是免费的。

对于传感器:我想提取“ Package id 0”的值来显示:CPU具有$ cpu_temperature。

1 个答案:

答案 0 :(得分:0)

您可以获取信息作为函数的一部分,并将其存储在变量中,而不是尝试从函数输出中获取信息,如下面的diskInfocpuTempInfo所示:

function info {
echo
kernel=$(uname -s -r)
echo $kernel"."
echo
packages=$(pacman -Qq | wc -l)
echo $packages "packages."
echo
df /dev/mmcblk1p2 -h
diskInfo=$(df /dev/mmcblk1p2 -h | awk 'FNR > 1 { print "Disk Size:" $2 " with " $3 " used. " $4 " available " $5 " of disk used " }')
echo $diskInfo
echo
sensors coretemp-isa-0000 -A
cpuTempInfo=$(sensors coretemp-isa-0000 -A | awk 'FNR == 2 { print $4 }'
echo $cpuTempInfo
}

echo $diskInfo

Disk Size:57G with 26G used. 29G available 48% of disk used

echo $cpuTempInfo

 +46.0°C