[linux-l] shell skript probleme mit leerzeichen

Morche Matthias Matthias.Morche at P7S1Produktion.de
Do Okt 27 18:14:55 CEST 2005


willek wrote:
...
>> for i in *; do
...
>> done
>> 
> Danke, das funktioniert, obwohl ich nicht verstehe warum. Warum reicht
> in diesen Fall ein Stern aus, um alle Dateien einzulesen?
> 
> Und noch eine Verständnisfrage:
> Ich wollte die Leerzeichen maskieren, etwa so:
> for i in `ls |sed s/" "/"\\ "/g` ; do
> warum hat das nicht funktioniert?
> 
> Und wie schaffe ich es beispielsweise, nur Bilddateien konvertieren zu
> lassen? So wie mein und Dein skript jetzt sind versuchen sie alles zu
> fressen, unabhängig davon, um  welche Art von Datei es sich handelt....
...

1. Weil * in der Shell für alle Dateien steht! Siehe "man bash" unter "Pathname expansion".

2. Wegen der Reihenfolge der Substitutionen: Erst werden die mit mit Backslash gequoteten Teile ersetzt dann die mit " gequoteten, dann wird das ls ausgeführt, dann wird sed ausgeführt und selbst wenn ein Backslash jetzt noch vorhanden wäre, würde er nur noch Teil der Strings sein, die der Variablen i zugewiesen werden.

3. Da ich nicht weiß, welche Dateitypen convert umwandeln kann, kann ich das nicht beantworten. Natürlich sollte man convert nur (Image-) Dateien übergeben, die es kennt, oder?

  gruss, matthias



Mehr Informationen über die Mailingliste linux-l