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