From a69e2fdb7cac48a2733afc139644cb42e8b79317 Mon Sep 17 00:00:00 2001 From: Sebastian Goll Date: Fri, 31 Dec 2021 04:57:53 +0100 Subject: [PATCH] Handle devices that are mounted at multiple paths --- bashmount | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/bashmount b/bashmount index 26d37c9..7d62484 100755 --- a/bashmount +++ b/bashmount @@ -346,8 +346,10 @@ print_device() { done fi elif check_mounted "$devname"; then - mountpath="$(info_mountpath "$devname")" - printf '%s' " ${GREEN}[$mountpath]${ALL_OFF}" + local -a mountpath_arr=() + info_mountpath_arr "$devname" mountpath_arr + printf -v mountpath "[%s] " "${mountpath_arr[@]}" + printf '%s' " ${GREEN}${mountpath}${ALL_OFF}" mounted[${#mounted[*]}]="$devname" fi printf '\n' @@ -379,7 +381,11 @@ info_fstype() { lsblk -drno FSTYPE "$1" 2>/dev/null } info_mountpath() { - findmnt -no TARGET "$1" 2>/dev/null + findmnt -no TARGET "$1" 2>/dev/null | head -n1 +} +info_mountpath_arr() { + local -n arr=$2 + local IFS=$'\n'; arr=( $(findmnt -no TARGET "$1" 2>/dev/null) ) } info_partlabel() { lsblk -drno PARTLABEL "$1" 2>/dev/null @@ -704,8 +710,12 @@ submenu() { else printf '%s' " mounted : " if (( mounted )); then + local -a mountpath_arr=() printf '%s\n' "${GREEN}yes${ALL_OFF}" - printf '%s\n' " mountpath : $(info_mountpath "$devname")" + info_mountpath_arr "$devname" mountpath_arr + for mountpath in "${mountpath_arr[@]}"; do + printf '%s\n' " mountpath : $mountpath" + done else printf '%s\n' "${RED}no${ALL_OFF}" fi