Guten Abend,
ich versuche mich gerade aus gegebenem Anlass an einem Shellskript, dass ein oder mehrere einfache Anführungszeichen aus einem Dateinamen durch ein Leerzeichen ersetzen soll (Mein User kommen auf so seltsame Dateinamen!)
Mein aktueller Versuch sieht wie folgt aus:
#! /bin/bash
newname=`echo $1 | sed “s/\’/ /g”`
echo $newname
## Ende
Rufe ich das Skript mit
rename.sh test’test
auf, gibt mir echo den ursprünglichen Namen aus. Auch ein
newname=`echo “$1” | sed “s/\’/ /g”`
ändert nichts am Ergebnis.
Kann mich vielleicht jemand vom Holzweg führen?
Danke & Gruß,
HP
DANKE!
Doch so trivial? Für mich stand ohne Zweifel fest, dass ein einfaches Anführungszeichen ein Sonderzeichen ist, welches nicht ohne vorangestellten Backslash auskommt.
Ich muss die Anführungszeichen beseitigen, da ich die Dateinamen im Anschluss noch mehrfach in einem PHP-Skript verwende und ich dort schon ausgiebig Gebrauch von einfachen und doppelten Anführungszeichen mache. Das zusätzliche Anführungszeichen im Dateinamen führt nur zu einem Chaos.
Gruß,
HP
Hallo,
ich glaube, daß Leerzeichen im Dateinamen gar nicht gut sind.
Ich verwende statt dessen den Unterstrich_, das sieht optisch aus wie ein Leerzeichen, ist aber keins.
Moin,
Du solltest in Deinem Skript noch die Varianten des Apostroph berücksichtigen:
´ ` (Akzent ohne Buchstaben)
‚ ‘ (Auto-Ersetzung von Word)
Ich bin bei einer ähnlichen Aufgabe (automatisches Taggen und Umbenennen von mp3) halb wahnsinnig geworden, weil die Leute in der CD-Datenbank alle (un)möglichen Varianten verwendet haben und ich glaubte, mein Skript sei defekt :-/
Deine User werden sicher erfinderisch, wenn sie merken, dass Anführungszeichen nicht “funktionieren”…
Als Minimum solltest Du
sed “s/[‘´`]/ /g”
nehmen. Gleiches gilt für die doppelten Anführungszeichen. (Wie die Office-Varianten auf Deinem System aussehen, solltest Du selbst eruieren und mit einem Hex-Editor prüfen, was davon bei Copy&Paste ankommt.)
Viel Erfolg,
Ugglan