Seu script é muito mais complicado do que precisa e tem alguns problemas:
- Você usa backticks em vez de
$()
. - Seu script ignora todos, menos o primeiro volume lógico encontrado.
- Você assume que a falta de um ponto de montagem para um lvpath significa que não há volumes lógicos. Esta suposição é simplesmente errada.
- ambos
lvs
elvdisplay
já informam o nome do dispositivo no Caminho LV, não há necessidade de fazer suposições ou suposições sobre como ele pode ser nomeado. -
lvs
tem opções de saída muito mais flexíveis do quelvdisplay
ouvgdisplay
.
Tente algo mais assim:
#! /bin/bash
lvcount=0
while read lvname vgname lvpath ; do
lvcount=$((lvcount+1))
printf "VG_Name is %s.\nLV_Name is %s.\n" "$vgname" "$lvname"
echo "LVM Device name is $lvpath"
mp=$(mount | grep "$lvpath" | awk '{print $3}')
if [ -n "$mp" ] ; then
echo "$mp is the mount point for $lvpath"
else
echo "$lvpath is not mounted."
fi
echo
done < <(lvs --no-headings -o lv_name,vg_name,lv_path)
echo "Found $lvcount logical volumes."