sonderzeichen in scripten
-
- Beiträge: 117
- Registriert: 19.07.2004 18:17:42
sonderzeichen in scripten
Hallo,
für ein script benötige ich etwas ähnliches wie:
#!/bin/sh
ldirs=`find -maxdepth 1 -type d`
echo $ldirs
for k in $ldirs
do
echo $k
done
wobei ldirs=. ./fdir1 ./edir withspace ./dir1
ich verwende find, da ich die ./ brauche.
das for listet natürlich ./edir und withspace getrennt.
(ich nenn meine dirs nicht so, aber die nutzer, deren verzeichnisse ich backupen will).
ich brech mir die ganze zeit schon einen ab um das zu fixen. meine ideee:
ldirs string nach . zerhacken und in array schreiben. dann über die array strings mit sed gehen, und alle sonderzeichen mit \ maskieren. das ganze natürlich mit standard tools.
hat da jemand schon was fertiges?
danke!
alex
für ein script benötige ich etwas ähnliches wie:
#!/bin/sh
ldirs=`find -maxdepth 1 -type d`
echo $ldirs
for k in $ldirs
do
echo $k
done
wobei ldirs=. ./fdir1 ./edir withspace ./dir1
ich verwende find, da ich die ./ brauche.
das for listet natürlich ./edir und withspace getrennt.
(ich nenn meine dirs nicht so, aber die nutzer, deren verzeichnisse ich backupen will).
ich brech mir die ganze zeit schon einen ab um das zu fixen. meine ideee:
ldirs string nach . zerhacken und in array schreiben. dann über die array strings mit sed gehen, und alle sonderzeichen mit \ maskieren. das ganze natürlich mit standard tools.
hat da jemand schon was fertiges?
danke!
alex
ja, aber leider ohne einen String nach "." zu zerhacken und in ein array zu schreiben, das kommt mir nämlich viel zu kompliziert vor und würde auch Probleme bei einem Directory "./xxx.yyy" machenalexatdebian hat geschrieben: hat da jemand schon was fertiges?
Code: Alles auswählen
root@gms1:~/tmp# mkdir "a b c"
root@gms1:~/tmp# mkdir "xxx.yyy"
root@gms1:~/tmp# find -maxdepth 1 -type d | while read dir; do echo "dir='$dir'"; done
dir='.'
dir='./a b c'
dir='./xxx.yyy'
gms
-
- Beiträge: 117
- Registriert: 19.07.2004 18:17:42
hallo,
danke für die tips. (ich hätte natürlich nach ./ zerhackt ).
nun gehen die probleme aber schon weiter:
ich hab zwar das verzeichnis nun in einem string, kann aber kein das leerzeichen nicht maskieren:
find -maxdepth 1 -type d | while read dir
do
echo $dir
masked=`echo $dir | sed -e 's/ /\\ /' `
if test -d $masked
then
echo "found it"
else
echo "NOT FOUND"
fi
done
gibt natürlich ein not found für die verzeichnisse mit space.
danke für die tips. (ich hätte natürlich nach ./ zerhackt ).
nun gehen die probleme aber schon weiter:
ich hab zwar das verzeichnis nun in einem string, kann aber kein das leerzeichen nicht maskieren:
find -maxdepth 1 -type d | while read dir
do
echo $dir
masked=`echo $dir | sed -e 's/ /\\ /' `
if test -d $masked
then
echo "found it"
else
echo "NOT FOUND"
fi
done
gibt natürlich ein not found für die verzeichnisse mit space.
Mach mal aus
Code: Alles auswählen
test -d $masked
Code: Alles auswählen
test -d "$masked"
nepos hat glaube ich folgendes gemeint:
Mach mal aus
ein
Gruß
gms
Mach mal aus
Code: Alles auswählen
masked=`echo $dir | sed -e 's/ /\\ /' `
if test -d $masked
Code: Alles auswählen
if test -d "$dir"
gms
-
- Beiträge: 117
- Registriert: 19.07.2004 18:17:42
hallo,
ja, die "" funktrionieren. :schäm: hätt man ja auch selbst draufkommen können.
bei dem ganzen konstrukt handelt es sich um ein backupscript (kombination aus rsync und svn). und wo wir schon bei sonderzeichen sind:
svn hat manchmal probleme mit bestimmten files (meistens kommen die von win maschinen), wenn sie ä's etc. enthalten.
svn beschwert sich über eine 'invalid utf-8' sequence.
gibt es ein tool, welches das dateisystem durchgeht und alle nicht dem standard entsprechenden dateinamen heruasfinden kann?
gruß
alex
ja, die "" funktrionieren. :schäm: hätt man ja auch selbst draufkommen können.
bei dem ganzen konstrukt handelt es sich um ein backupscript (kombination aus rsync und svn). und wo wir schon bei sonderzeichen sind:
svn hat manchmal probleme mit bestimmten files (meistens kommen die von win maschinen), wenn sie ä's etc. enthalten.
svn beschwert sich über eine 'invalid utf-8' sequence.
gibt es ein tool, welches das dateisystem durchgeht und alle nicht dem standard entsprechenden dateinamen heruasfinden kann?
gruß
alex