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

我有一个bash脚本,计算给定的分区使用的磁盘空间百分比:


     df -k $ devname |  grep -v ^文件|  awk'{printf(“%i”,$ 3 * 100 / $ 2);  }

它不能在名称很长的分区上工作,因为名称会将其他列推到下一行,我该如何解决这个问题?

 DF
文件系统1K块已用可用使用%挂载
的/ dev /映射器/ VolGroup60-ROOT
                      2865493440 2222006740 497927968 82%/
 tmpfs 30913808 0 30913808 0%/ dev / shm
 / dev / sda1 495844 103347 366897 22%/ boot

df-P (便携性)选项使用符合posix的输出格式,并将所有内容保存在一行中。 你也可以使用sel简化awk部分。

而不是解析整个“表”,您可以直接使用--output参数输出百分比的用法(详见man 1 df ):

 $ df -k --output=pcent /dev/sda1 Use% 13% 

这应该是更容易过滤。

例如通过在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%