Dateinamen mit Quotes in Shell Skripten

Bernhard Sadlowski sadlowsk at Mathematik.Uni-Bielefeld.DE
Tue Aug 28 18:03:03 CEST 2001


On 28 Aug 2001 17:45, Steffen Pingel <steffenp at gmx.de> wrote:
> Teilweise habe ich perl benutzt, um das Problem zu umgehen, aber das
> scheint mir nicht der eleganteste und Ansatz zu sein:
> 
> ls | perl -p -e "s/\'/\\\'/g;s/\ /\\\ /g" | xargs ...

Ich benutze folgendes ähnliches Skript dem ich in stdin die Fileliste
mitgebe und auf der Kommandozeile den Befehl:

--- ls.sh ---
#!/bin/sh 
cmd="ls"
[ $# -gt 0 ] && cmd="$@"

OFS="${IFS}"
IFS="
"
export IFS
while read file
do
        IFS="${OFS}"
        ${cmd} "${file}"
        IFS="
"
done			
----- ende ----

Für die read schleife wird der IFS (input field separator) auf das
Zeileendezeichen gesetzt. Damit kann man auch Dateien verarbeiten, die ein "
oder ein ' oder auch ein Leerzeichen (usw.) im Dateinamen oder am Anfang
oder Ende haben.

# ls /tmp | ./ls.sh		-> führt "ls" aus auf die fileliste
# ls /tmp | ./ls.sh touch	-> führt "touch" aus

Klappt das?

Gruss,
Bernhard





More information about the Linux mailing list