[gelöst] Hilfe für Script gesucht

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
clue
Beiträge: 943
Registriert: 08.07.2007 17:36:57

[gelöst] Hilfe für Script gesucht

Beitrag von clue » 08.09.2010 23:19:35

Hi!

Ich habe ein Script gefunden, welches mir Zeile für Zeile Pfade zu Dateien ausliest und an ext3grep weiterleitet. Allerdings ignoriert das Script die Backslashe im Pfadnamen. Beispiel:

Der richtige Datei-Name lautet: "/bilder/urlaub\ see.001" (man beachte den Backslash)

Davon habe ich 500 Stück. Nun möchte ich, dass mein Script meine bereits fertige Textdatei ausliest, in der ich schon die kompletten Dateinamen gelistet habe.

Beispiel-Inhalt der Textdatei:

\bilder/urlaub\ see.001
\bilder/urlaub\ see.002
\bilder/urlaub\ see.003
.
.
.
USW.

Das Script, welches ich im Netz gefunden habe sieht so aus:

Code: Alles auswählen

#!/bin/bash
# Restemeier 2009
cat $1 /mnt/dateiliste.txt | while read zeile; do
echo ext3grep /dev/mapper/truecrypt1 --restore-file "$zeile"
/usr/local/bin/ext3grep /dev/mapper/truecrypt1 --restore-file "$zeile"
done
echo fertig!
Das Problem:

Leider ignoriert das Script den Backslash in jedem Dateinamen. Daher kann ext3grep die Dateien auch nicht finden.

Wie kann ich dem Script beibringen auch den Backslash in den Dateinamen zu übernehmen?
Zuletzt geändert von clue am 09.09.2010 11:55:07, insgesamt 1-mal geändert.
Offenbarung 13 erfüllt sich gerade vor unseren Augen, genießen wir also die letzten Jahre unserer Scheinfreiheit

gbotti
Beiträge: 846
Registriert: 16.07.2010 14:24:43
Wohnort: München

Re: Hilfe für Script gesucht

Beitrag von gbotti » 09.09.2010 09:02:40

Guten morgen.

Ein einfacher Backslash entwertet das nachfolgende Zeichen, damit es nicht interpretiert wird.
Beispiel:

Code: Alles auswählen

echo "\$test"
gibt auf der Konsole ein
$test
aus.

Mach die Backslashes doppelt. Dann klappts.

Code: Alles auswählen

sed 's/\\/\\\\/g' DATEI > DATEIMITDOPPELBACKSLASHES
Georg
RTFM, LMGTFY, Orakel... Ach... Warum muss man suchen...
Schrödingers Backup --- "Der Zustand eines Backups ist unbekannt, solange man es nicht wiederherstellt" --- Quelle: Nixcraft

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Hilfe für Script gesucht

Beitrag von lemak » 09.09.2010 09:14:27

Hi,

read kennt die Option -r
If this option is given, backslash does not act as an escape character.
The backslash is considered to be part of the line. In particular, a backslash-newline
pair may not be used as a line continuation.
gbotti hat geschrieben:Mach die Backslashes doppelt. Dann klappts.
Das wollte ich auch erst vorschlagen :-)

MfG i

clue
Beiträge: 943
Registriert: 08.07.2007 17:36:57

Re: Hilfe für Script gesucht

Beitrag von clue » 09.09.2010 11:54:44

Wow, Ihr seid super, Danke! Das mit dem doppelten Backslash hat wunderbar funktioniert. Das Script tut nun, was es soll. Aber wer ahnt denn auch, dass man den Backslash verdoppeln muss ...

Naja, Hauptsache es klappt jetzt, danke an Euch beide :D
Offenbarung 13 erfüllt sich gerade vor unseren Augen, genießen wir also die letzten Jahre unserer Scheinfreiheit

gbotti
Beiträge: 846
Registriert: 16.07.2010 14:24:43
Wohnort: München

Re: [gelöst] Hilfe für Script gesucht

Beitrag von gbotti » 09.09.2010 12:47:58

Wenn man Scripts schreibt und sich da eingelesen hat kommt das gleich in den ersten Kapiteln vor.
Außerdem nimmt man den Backslash auf der Bash zum entwerten des Leerzeichens oder anderer Sonderzeichen. Da is es dann eigentlich logisch, dass man den Backslash entwerten muss um ihn zu kriegen :)
Georg
RTFM, LMGTFY, Orakel... Ach... Warum muss man suchen...
Schrödingers Backup --- "Der Zustand eines Backups ist unbekannt, solange man es nicht wiederherstellt" --- Quelle: Nixcraft

Antworten