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