Преобразование вывода df -h в массив в Bash - PullRequest
3 голосов
/ 31 августа 2011

Я пытаюсь сделать очень простую вещь, которой, я думаю, я смог бы справиться со всем самостоятельно, но увы ..

То, что я пытаюсь сделать, - это овладетьзначения, возвращаемые "df -h", и возможность хранить эти значения в массиве скриптов bash.Цель состоит в том, чтобы объединить их с другими данными (такими как текущая временная метка) и вывести их в новый файл / перезаписать существующий файл.

Следующие две команды дают мне то, что я хочу в командной строке, но я не могу всю жизнь загрузить вывод в массив, который я могу перебрать.

Последующее дает мнеИспользование диска в процентах для каждого диска:

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

И следующий путь дает мне путь к диску:

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

Однако я не могу назначить вывод этого в переменную внутрисценарий оболочки, который я могу перебрать.

ЛЮБЫЕ идеи и помощь будут очень признательны !!

Ответы [ 2 ]

5 голосов
/ 31 августа 2011

Вы можете присвоить вывод массиву следующим образом:

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

Затем вы можете выполнить итерации по нему, например, так:

for var in "${arr[@]}"
do
    # things
done
3 голосов
/ 31 августа 2011

Вы можете использовать это.

#!/bin/bash

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

(Примечание работает только с bash, но не с / bin / sh)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...