Ваш способ не определяет сменные устройства
видать я чегото не догоняю, devices=$(lsblk -l -o NAME,TYPE | awk '$2 == "disk" && !/^(sda|zram0|fd0)/')добывает все носители на компе, кроме sda|zram0|fd0
if [[ $(udevadm info -q all -n /dev/"$device" | grep -i "ID_BUS=usb") ]]; then проверка если подключен к usb то складываем носитель плюс подключен к usb значит флэшка не? просто не понимаю почему нет?
прихожу к тому что способ весьма не плох
ввёл для изучения выхлопа об устройствах
udevadm info -q all -n /dev/sd*
там можно грепнуть по таким параметрам ID_BUS=usb в связке с ID_TYPE=disk и надежно отфильтровать что имеем дело с носимым устройством, не применяя даже lsblk -l просто мне с lsblk -l понятней, ваш способ тоже работает arg_prev=$(cat /sys/block/sd*/queue/rotational)
arg=$(echo "$arg_prev" | tail -n 1)
echo "$arg"
1
это с подключеной флэшкой
и 0 если флэшка отключена, меньше кода и изящно в общем я протестирую и с вашим способом, но он как ни странно меньше читаем, то есть не такой понятный ибо о $(cat /sys/block/sd*/queue/rotational) нужно еще и знать, интересно стало спасибо еще раз.