#!/bin/bash function chooseDisk() { local -n result="$1"; local message="$2"; local choice; local disk; local -a disks; local i; disks=(); while read disk do local -a diskInfo; diskInfo=($disk); if [ "${diskInfo[2]}" == "TYPE" ] || [ "${diskInfo[2]}" == "disk" ] then disks+=("$disk"); fi; done < <(lsblk -do NAME,SIZE,TYPE); diskCount="$(expr "${#disks[@]}" - 1)"; padding="${#diskCount}"; if [ "$diskCount" -gt 0 ] then while true do echo "$message"; for i in $(seq 0 "$(expr "$diskCount")") do local index; if [ "$i" -eq 0 ] then index=""; else index="$i:"; fi; printf "%$(expr "${diskCount}" + 1)s ${disks[$i]}" "$index"; echo ""; done; read -p "Your choice: " choice; if [ "$choice" -ge 1 ] && [ "$choice" -le "$diskCount" ] then disk=(${disks[$choice]}); result="/dev/${disk[0]}"; return; else >&2 echo "The specified choice \"$choice\" is invalid!"; fi; done; else >&2 echo "No valid disk found!"; fi; }