PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Aushängen eines USB-Datenträgers per Skript



DieterH
07.11.13, 12:20
Ich verwende gelegentlich zeitgleich verschiedene USB-Datenträger auf meinem Linux-System (OpenSuSE 12.3). Viele Vorgänge sind automatisiert, d.h. in Shell-Skripts hinterlegt.

Nach Beendigung der Arbeiten möchte ich die in das Dateisystem eingehängten USB-Datenträger mittels eines Skripts automatisiert aushängen (d.h. nicht über Dolphin). Die allgemeine Syntax in SuSE 12.3 lautet: sudo umount /run/media/benutzername/USBname.

Enthält der USBname ein Leerzeichen (z.B. „USB DISK“), so scheitert der oben genannte Befehl, auch wenn ich (dem Leerzeichen einen Rückwärtsschrägstrich (neudeutsch: „backslash“) voranstelle. Selbst ein doppelter Rückwärtsschrägstrich hilft nicht weiter.

Minimal-Skript /tmp/x.sh:
#TMP_USB="USB\\\\ DISK"
#TMP_USB="USB\\ DISK"
TMP_USB="USB\ DISK"
sudo umount /run/media/benutzername/${TMP_USB}

Nach Eingabe des root-Kennworts erhalte ich allen Fällen (egal wieviele Rückwärtsschrägstriche) folgende Fehlermeldung:
$ /tmp/x.sh
umount: /run/media/benutzername/USB\: not found
umount: DISK/: not found

d.h. der umount-Befehl betrachtet trotz des Rückwärtsschrägstriches vor dem Leerzeichen das Leerzeichen nicht als Bestandteil des Namens des USB-Datenträgers, sondern als Trennzeichen für eine Liste von Namen.

Es ist bei allen Versuchen sichergestellt, dass ein USB-Datenträger namens „USB DISK“ im System eingehängt ist:
$ ls -1 /run/media/benutzername/
USB DISK


Nach Eingabe des umount-Befehls in der Befehlszeile
sudo umount /run/media/benutzername/USB\ DISK/

wird der Datenträger (nach Eingabe des root-Kennworts) ordnungsgemäß ausgehängt.

Was ist in das Skript einzufügen, damit der Aushängevorgang im Skript funktioniert?

Vielen Dank im voraus.

Gruß
Dieter

pibi
07.11.13, 14:34
Was ist in das Skript einzufügen, damit der Aushängevorgang im Skript funktioniert?Du musst nicht die Deklaration der Variable escapen, sondern den Befehlsstring abaendern. Also etwa so:
TMP_USB="USB DISK"
sudo umount /run/media/benutzername/"$TMP_USB"

Gruss Pit.

buzz768
07.11.13, 15:16
So ginge es auch


TMP_USB="USB\ DISK"
eval sudo umount /run/media/benutzername/${TMP_USB}

DieterH
07.11.13, 15:57
Funktioniert leider auch nicht, wie die nachstehenden 3-Zeiler beweisen.
Die jeweils ersten zwei Zeilen sind der Inhalt des Minimal-Skripts; die jeweils letzze Zeile das Ergebnis der Ausführung des Skripts.

TMP_USB="USB\\ DISK"
sudo umount /run/media/benutzername/"${TMP_USB}"/
umount: /run/media/benutzername/USB\ DISK/: not found

TMP_USB="USB\\\\ DISK"
sudo umount /run/media/benutzername/"${TMP_USB}"/
umount: /run/media/benutzername/USB\\ DISK/: not found

TMP_USB="USB\ DISK"
eval sudo umount /run/media/benutzername/"${TMP_USB}"/
umount: /run/media/benutzername/USB DISK/: not found

TMP_USB="USB\\ DISK"
eval sudo umount /run/media/benutzername/"${TMP_USB}"/
umount: /run/media/benutzername/USB DISK/: not found

TMP_USB="USB\ DISK"
eval sudo umount /run/media/benutzername/${TMP_USB}/
umount: /run/media/benutzername/USB DISK/: not found

Efraim
08.11.13, 09:02
Funktioniert leider auch nicht, wie die nachstehenden 3-Zeiler beweisen.Die beweisen, dass Du kein Copy&Paste kannst.

Verzichte komplett auf die Backslashes und ersetze "benutzername":


TMP_USB="USB DISK"
sudo umount "/run/media/benutzername/${TMP_USB}"