juepi
20-04-2008, 10:55
Hallo Leute,
Ich hab' da ein Problem dass mich jetzt schon seit einiger Zeit wurmt, und da es eigentlich nichts aussergewöhnliches ist, nehme ich fast an, dass es eine relativ einfache Lösung gibt.
Man nehme folgendes script:
#!/bin/bash
for file in `find . -name '*.txt'`
do
cat $file
done
wenn ich jetzt vom find eine Datei mit Leerzeichen im Namen übergeben bekomme ("file with spaces.txt") passiert mir folgendes:
bash test.sh
cat: ./file: No such file or directory
cat: with: No such file or directory
cat: spaces.txt: No such file or directory
Was mir im ersten Ansatz auch logisch erscheint, weil die Leerzeichen nicht backslash-escaped wurden, also das ganze folgendermassen umgebaut:
#!/bin/bash
for file in `ls -b1 *.txt`
do
cat $file
done
Ergibt aber immer noch folgenden Output:
bash test.sh
cat: file\: No such file or directory
cat: with\: No such file or directory
cat: spaces.txt: No such file or directory
Kann mir das jemand erklären, bzw. eine Lösung verraten?
Vielen Dank im voraus,
lg,
Jürgen
P.s.: das $file unter double quotes zu stellen beim cat bringt leider auch nix :(
Ich hab' da ein Problem dass mich jetzt schon seit einiger Zeit wurmt, und da es eigentlich nichts aussergewöhnliches ist, nehme ich fast an, dass es eine relativ einfache Lösung gibt.
Man nehme folgendes script:
#!/bin/bash
for file in `find . -name '*.txt'`
do
cat $file
done
wenn ich jetzt vom find eine Datei mit Leerzeichen im Namen übergeben bekomme ("file with spaces.txt") passiert mir folgendes:
bash test.sh
cat: ./file: No such file or directory
cat: with: No such file or directory
cat: spaces.txt: No such file or directory
Was mir im ersten Ansatz auch logisch erscheint, weil die Leerzeichen nicht backslash-escaped wurden, also das ganze folgendermassen umgebaut:
#!/bin/bash
for file in `ls -b1 *.txt`
do
cat $file
done
Ergibt aber immer noch folgenden Output:
bash test.sh
cat: file\: No such file or directory
cat: with\: No such file or directory
cat: spaces.txt: No such file or directory
Kann mir das jemand erklären, bzw. eine Lösung verraten?
Vielen Dank im voraus,
lg,
Jürgen
P.s.: das $file unter double quotes zu stellen beim cat bringt leider auch nix :(