#!/bin/bash -e while true; do mapfile -t LSBLK < <(lsblk -n --paths --list | grep part) COLUMNS=1 select dev in "${LSBLK[@]}"; do if [ -z "$dev" ]; then break fi name="$(awk '{print $1}' <<< "$dev")" if mount | grep -q "$name"; then umount "$name" else udisksctl mount -b "$name" > /dev/null fi break done || exit done