开发者

Converting the output of df -h into an array in Bash

开发者 https://www.devze.com 2023-04-01 05:02 出处:网络
I am trying to do a very basic thing, which I though I should be able to manage all on my own, but alas..

I am trying to do a very basic thing, which I though I should be able to manage all on my own, but alas..

What I am attempting to do, is to get hold of the values returned by "df -h", and to be able to store these values in a bash script array. The purpose is to combine it with other data (like the current timestamp) and output this to a new fi开发者_开发问答le/overwrite an existing file.

The following two commands give me what I want on the commandline, but I cannot for the life of me load the output into an array that I can iterate over.

The followng gives me the disk utilization in percent for each disk:

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

And the following gives me the disk path:

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

However, I am unable to assign the output of this into a variable inside a shell script that I can iterate over.

ANY ideas and help would be very much appreciated!!


You can assign the output to an array like this:

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

Then you can iterate over it for example like this:

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


You can use this.

#!/bin/bash

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

(Note only works with bash, not /bin/sh)

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号