bash脚本,用于计算给定分区的已用磁盘空间百分比

时间:2014-03-18 00:06:39

标签: linux bash

我有一个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

2 个答案:

答案 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部分。