在Bash中将df -h的输出转换为数组

时间:2011-08-31 12:02:47

标签: bash shell

我正在尝试做一个非常基本的事情,我虽然应该能够自己管理所有事情但是唉...

我正在尝试做的是获取“df -h”返回的值,并能够将这些值存储在bash脚本数组中。目的是将其与其他数据(如当前时间戳)组合,并将其输出到新文件/覆盖现有文件。

以下两个命令在命令行上给出了我想要的东西,但我不能在生命中将输出加载到我可以迭代的数组中。

以下内容为我提供了每个磁盘的磁盘利用率百分比:

df -h | grep -vE "^Filesystem|shm|boot" |  awk '{ print +$5 }'

以下是我的磁盘路径:

df -h | grep -vE "^Filesystem|shm|boot" |  awk '{ print $6 }'

但是,我无法将其输出分配到我可以迭代的shell脚本中的变量中。

非常感谢任何想法和帮助!!

2 个答案:

答案 0 :(得分:5)

您可以将输出分配给这样的数组:

arr=(`df -h | grep -vE "^Filesystem|shm|boot" |  awk '{ print +$5 }'`)

然后你可以迭代它,例如:

for var in "${arr[@]}"
do
    # things
done

答案 1 :(得分:3)

你可以使用它。

#!/bin/bash

arr=(`df -h | grep -vE "^Filesystem|shm|boot" |  awk '{ print +$5 }'`)
for v in "${arr[@]}"
do
    echo $v
done

(注意仅适用于bash,而不适用于/ bin / sh)