bash scripting: quoting von Files

Habe was ähnliches schon mal nachgefragt, kann die Mail aber nicht mehr
finden.

Mein aktuelles Problem sind Spaces in den Dateinamen, ich führe nämlich
folgendes Kommando aus:

ls -d ${datadir}/* 2>/dev/null

Und der Inhalt wird in einer Variable gespeichert:

datacontent="`ls -d ${datadir}/* 2>/dev/null`"

Über diese Variable wird anschließend mittels einer for Schleife
durchiteriert:

for file in ${datacontent}; do
  # ...
done

Nun habe ich eben Probleme, wenn der Dateiname Leerzeichen enthält, da
diese Strings dann aufgetrennt werden. Habe die Optionen -Q und
--quoting-style von ls ausprobiert, haben mir aber nicht weitergeholfen :frowning:

Das ist wieder ein Problem, das ich als Standardproblem bezeichnen
würde. Daher hoffe ich gibts auch eine Standardlösung dazu. Kennt die
jemand?

byez
Patrick

Habe was ähnliches schon mal nachgefragt, kann die Mail aber nicht mehr
finden.

Mein aktuelles Problem sind Spaces in den Dateinamen, ich führe nämlich
folgendes Kommando aus:

Schau mal bei der iX vorbei:
http://www.google.com/search?q=site%3Awww.heise.de+find+leerzeichen+gnu

Bye, Chris.

Danke für den guten Link. Schlussendlich werde ich dann trotzdem find
einsetzen müssen :wink:

mfg.
Patrick

chrism(a)desk.nl wrote:

hallo

verwende die forschleife direkt?
also:
for i in $datadir}/*; do
  command "$i"
done

oder so:

IFS="~"
`ls -d -- ${datadir}/* 2>/dev/null` | while read LINE; do
  command "$LINE"
done

ist halt ein prozess mehr :wink:

mit der for-schleife wirds nicht gehen weil die das space verwendet um die
items zu trennen und wenn du die dateien auch gequotet hast ist das space
immer noch da.

noch ein tip:
wenn du bei ls nach den optionen -- verwendest kann das script auch
dateien die mit einem - beginnen, sonst meint die shell die datei ist eine
option

peter

Danke Peter,

werde dein Tipp ausprobieren, das mit den eigenen Prozess :slight_smile:

byez
Patrick

Peter.Warasin(a)darkrealms.org wrote: