Присвоить Linux тип файловой системы переменной - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь присвоить Linux тип файловой системы переменной. Мой вывод команды df -Th | grep "^/dev" выглядит следующим образом:

/dev/mapper/rhel-root xfs        50G   11G   40G  22% /
/dev/mapper/rhel-home xfs        53G  569M   53G   2% /home
/dev/sdb1             xfs      1014M  192M  823M  19% /boot
/dev/sdc1             vfat      7.6G  7.4G  125M  99% /run/media/root/RHEL-8-1-0-

Мое решение состояло в том, чтобы передать это в оператор awk, чтобы вернуть тип для rhel- root, однако я не получаю никакого вывода.

var=$(awk '{
  if($1 == "/dev/mapper/rhel-root"){
    print $2;
    }
  }' | df -Th | grep "^/dev")

Как назначить тип файла (xfs) переменной?

1 Ответ

1 голос
/ 28 февраля 2020

Вам необходимо передать выходные данные конвейера df .. grep .. в команду awk в качестве ввода:

var=$(awk '{
  if($1 == "/dev/mapper/rhel-root"){
    print $2;
    }
  }' <(df -Th | grep "^/dev") )
echo "$var"

Затем будет выведено: xfs.

A Обобщенное решение будет:

declare -A array                # assiciative array
while read -r fs type others; do
    if [[ $fs = /dev/* ]]; then
        array[$fs]="$type"      # associate fs with its type
    fi
done < <(df -Th)

echo "${array[/dev/mapper/rhel-root]}"
...