我有一个bash脚本,用于计算给定分区的已用磁盘空间百分比:
df -k $devname | grep -v ^File | awk '{printf ("%i",$3*100 / $2); }
它不适用于具有长名称的分区,因为名称会将其他列推送到下一行,如何解决此问题?
df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup60-ROOT 2865493440 2222006740 497927968 82% / tmpfs 30913808 0 30913808 0% /dev/shm /dev/sda1 495844 103347 366897 22% /boot
答案 0 :(得分:6)
而不是解析整个"表"您可以使用--output
参数直接输出百分比用法(有关详细信息,请参阅man 1 df
):
$ df -k --output=pcent /dev/sda1
Use%
13%
这应该更容易过滤。
E.g。通过在Bash 4中创建一个带有readarray
的数组:
$ readarray -t -s 1 percentage < <(df -k --output=pcent /dev/sda1)
$ echo "${percentage[0]// /}"
13%
逐行将df
的输出分配给数组:
$ percentage=($(df -k --output=pcent /dev/sda1))
$ echo "${percentage[1]}"
13%
答案 1 :(得分:2)
-P
的{{1}}(可移植性)选项使用符合posix的输出格式,并将所有内容保存在一行中。您还可以使用sel
简化df
部分。