Einhängen von Geräten an in Variablen gespeicherte Einhängepunkte

Einhängen von Geräten an in Variablen gespeicherte Einhängepunkte

Ich erstelle dieses Skript und finde keine Möglichkeit, die in der Variable „devs“ gespeicherten Geräte entsprechend in die in „mntpnt“ aufgeführten Einhängepunkte einzubinden.

Ich hoffe, ich habe mich klar ausgedrückt. Hier ist das bisherige Skript:

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

Antwort1

Wenn Sie nur die ersten Positionen aller vorhandenen Geräte mounten möchten, müssen Sie diese nicht ermitteln und speichern. Sie können sie einfach mounten, während Sie iterieren:

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

Wenn ich das für mich schreiben würde, würde ich die sudoBefehle nicht einschließen. Stattdessen würde ich verlangen, dass das Skript unter ausgeführt wird sudo. Die Erkenntnis, dass dieses Skript Root-Rechte benötigt, muss an den Benutzer zurückgewiesen werden.

Antwort2

Hier ist eine Alternative:

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

verwandte Informationen