Montando dispositivos em pontos de montagem armazenados em variáveis

Montando dispositivos em pontos de montagem armazenados em variáveis

Estou fazendo este script e não consigo encontrar uma maneira de montar adequadamente os dispositivos armazenados na variável "devs" nos pontos de montagem listados em "mntpnt".

Espero estar sendo claro ao me explicar. Aqui está o roteiro até agora:

#!/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*)

Responder1

Se você deseja apenas montar as primeiras posições de todos os dispositivos existentes, não precisa determiná-los e salvá-los. Você pode simplesmente montá-los enquanto itera:

#!/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

Se eu estivesse escrevendo isso para mim, não incluiria os sudocomandos. Em vez disso, eu exigiria que o script fosse executado em sudo. Empurre a percepção de que esse script precisa de privilégios de root de volta ao usuário.

Responder2

Aqui está uma alternativa:

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

informação relacionada