源实现,返回最小单位是GB,人们可以自行参考下述 shell 脚本代码。
calc_disk_size() {
local total_size=0
local array=$@
for size in ${array[@]}
do
[ "${size}" == "0" ] && size_t=0 || size_t=`echo ${size:0:${#size}-1}`
[ "`echo ${size:(-1)}`" == "K" ] && size=0
[ "`echo ${size:(-1)}`" == "M" ] && size=$(awk 'BEGIN{printf "%.1f", '$size_t' / 1024}')
[ "`echo ${size:(-1)}`" == "T" ] && size=$(awk 'BEGIN{printf "%.1f", '$size_t' * 1024}')
[ "`echo ${size:(-1)}`" == "G" ] && size=${size_t}
total_size=$(awk 'BEGIN{printf "%.1f", '$total_size' + '$size'}')
done
echo ${total_size}
}
调用该 shell 脚本函数并获取管道输出的内容:shell变量=$(calc_disk_size)
# 显示总磁盘空间和已用磁盘空间(单位:GB)
disk_size1=$(LANG=C df -hPl | grep -wvE '\-|none|tmpfs|overlay|shm|udev|devtmpfs|by-uuid|chroot|Filesystem' | awk '{print $2}')
disk_size2=$(LANG=C df -hPl | grep -wvE '\-|none|tmpfs|overlay|shm|udev|devtmpfs|by-uuid|chroot|Filesystem' | awk '{print $3}')
disk_total=$(calc_disk_size ${disk_size1[@]})
disk_used=$(calc_disk_size ${disk_size2[@]})