[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