Once again I miss the obvious. So we have spaces in the partition name and the for loop is breaking on the spaces. So we should set the for loop to separate by newlines. Try the following which is just setting the IFS variable. Then I set it back at the end because I'm too lazy to check what the disk for loop uses. You don't need to change all this. Just put the "IFS" lines where I've added them near the beginning and end. Uncomment the partition size calc and see what happens.
[code] PREVIFS=$IFS IFS="$NEWLINEIFS"; for partition in $(lsblk -lno NAME /dev/$disk 2>/dev/null | grep -v ^$disk\$ ); do if [ -n "$partition" ] && [ "$partition" != "$disk" ]; then
# partition_mount_type=$(lsblk -lndo TYPE /dev/"$partition" 2>/dev/null) partition_mount_type=$(lsblk -lno NAME,TYPE /dev/$disk 2>/dev/null | grep "^$partition " | sed -e "s/$partition//g") partition_mount_type=$(trim "$partition_mount_type") if [ "$partition_mount_type" = "part" ]; then partition_mount_type="partition" partition_type="local" else partition_mount_type="mount point" partition_type="$partition_mount_type" fi
#partition_mount_point=$(lsblk -lndo MOUNTPOINT /dev/"$partition" 2>/dev/null) partition_mount_point=$(lsblk -lno NAME,MOUNTPOINT /dev/$disk 2>/dev/null | grep "^$partition " | sed -e "s/$partition//g") partition_mount_point=$(trim "$partition_mount_point")
#partition_name=$(lsblk -lndo LABEL /dev/"$partition" 2>/dev/null) partition_name=$(lsblk -lno NAME,LABEL /dev/$disk 2>/dev/null | grep "^$partition " | sed -e "s/$partition//g") partition_name=$(trim "$partition_name")
#partition_size=$(lsblk -lbndo SIZE /dev/"$partition" 2>/dev/null) #partition_size=$(lsblk -lbo NAME,SIZE /dev/$disk 2>/dev/null | grep "^$partition " | sed -e "s/$partition//g") partition_size=$(lsblk -lbo NAME,SIZE /dev/$disk 2>/dev/null | grep "^$partition " | rev | cut -d" " -f1 | rev) partition_size=$((partition_size / 1024 / 1024))
#partition_format=$(lsblk -lndo FSTYPE /dev/"$partition" 2>/dev/null) partition_format=$(lsblk -lno NAME,FSTYPE /dev/$disk 2>/dev/null | grep "^$partition " | sed -e "s/$partition//g") partition_format=$(trim "$partition_format")
#partition_caption=$(lsblk -lndo LABEL /dev/"$partition" 2>/dev/null) partition_caption=$(lsblk -lno NAME,LABEL /dev/$disk 2>/dev/null | grep "^$partition " | sed -e "s/$partition//g") partition_caption=$(trim "$partition_caption")
partition_device_id="/dev/$partition" partition_disk_index="$disk" partition_bootable="" partition_quotas_supported="" partition_quotas_enabled=""
#partition_serial=$(lsblk -lndo UUID /dev/"$partition" 2>/dev/null) partition_serial=$(lsblk -lno NAME,UUID /dev/$disk 2>/dev/null | grep "^$partition " | sed -e "s/$partition//g") partition_serial=$(trim "$partition_serial")
#partition_free_space=$(df -m /dev/"$partition" 2>/dev/null | grep /dev/"$partition" | awk '{print $4}') partition_free_space=$(df -m --total "$partition_mount_point" 2>/dev/null | grep ^total | awk '{print $4}') if [ -z "$partition_free_space" ] && [ -n "$partition_serial" ]; then partition_free_space=$(df -m /dev/disk/by-uuid/"$partition_serial" 2>/dev/null | grep "$partition_serial" | awk '{print $4}') fi #partition_used_space=$(df -m /dev/"$partition" 2>/dev/null | grep /dev/"$partition" | awk '{print $3}') partition_used_space=$(df -m --total "$partition_mount_point" 2>/dev/null | grep ^total | awk '{print $3}') if [ -z "$partition_used_space" ] && [ -n "$partition_serial" ]; then partition_used_space=$(df -m /dev/disk/by-uuid/"$partition_serial" 2>/dev/null | grep "$partition_serial" | awk '{print $3}') fi
if [ "$partition_format" = "swap" ]; then partition_used_space=$(free -m | grep -i swap | awk '{print $3}') partition_free_space=$(free -m | grep -i swap | awk '{print $4}') fi
partition_result=$partition_result" <item> <serial>$(escape_xml "$partition_serial")</serial> <name>$(escape_xml "$partition_name")</name> <description>$(escape_xml "$partition_caption")</description> <device>$(escape_xml "$partition_device_id")</device> <hard_drive_index>$(escape_xml "$partition_disk_index")</hard_drive_index> <partition_disk_index>$(escape_xml "$partition_disk_index")</partition_disk_index> <mount_type>$(escape_xml "$partition_mount_type")</mount_type> <mount_point>$(escape_xml "$partition_mount_point")</mount_point> <size>$(escape_xml "$partition_size")</size> <free>$(escape_xml "$partition_free_space")</free> <used>$(escape_xml "$partition_used_space")</used> <format>$(escape_xml "$partition_format")</format> <type>$(escape_xml "$partition_type")</type> </item>"
fi done IFS=$PREVIFS done echo " </disk>" >> "$xml_file"[/code]
|