Монтирование устройств к точкам монтирования, хранящимся в переменных

Монтирование устройств к точкам монтирования, хранящимся в переменных

Я выполняю этот скрипт и не могу найти способ соответствующим образом смонтировать устройства, хранящиеся в переменной «devs», в точки монтирования, перечисленные в «mntpnt».

Надеюсь, я понятно излагаю свои мысли. Вот сценарий на данный момент:

#!/bin/bash

count=$(find /dev/sd{b..z}1 2>/dev/null | wc -l)
dirnames=$(printf "win%d " $(seq $count))

for i in $dirnames
do
        sudo mkdir -p /mnt/$i
done

devs=$(find /dev/sd{b..z}1 2>/dev/null)
mntpnt=$(find /mnt/win*)

решение1

Если вы просто хотите смонтировать все первые позиции существующих устройств, вам не нужно определять их и сохранять. Вы можете просто смонтировать их по мере итерации:

#!/bin/sh
i=0
for dev in /dev/sd[b-z]1
do
    mnt="/mnt/win$((i+=1))"
    sudo mkdir -p "$mnt"
    sudo mount "$dev" "$mnt"
done

Если бы я писал это для себя, я бы не включал команды sudo. Вместо этого я бы потребовал, чтобы скрипт запускался под sudo. Верните пользователю понимание того, что этому скрипту нужны привилегии root.

решение2

Вот альтернатива:

find /dev -name "*sd[b-z]1" | \
  while IFS= read -r i; do
    dir="/mnt/win${i##*[^1]}"
    sudo mkdir -p "$dir"
    sudo mount "$i" "$dir"
  done

Связанный контент