Moin, * Christoph Maurer <christoph-maurer@gmx.de> [01-11-21 15:37]:
Am Mit, 21 Nov 2001 schrieb Andreas Achtzehn:
Für ein Backup-Script brauche ich dringend eine Lösung. Wir finden die zu backupenden Dateien durch einen find und schreiben die Namen in eine Variable:
VARIABLE=`find /dir -name "*.bck"` Danach wollen dir die Dateien kopieren: for i in $VARIABLE; do cp "$i" /ziel done
find füllt die Variable wunderbar, doch das Problem entsteht, wenn kopiert werden soll. Dateien, die Leerzeichen enthalten, werden durch for als zwei Werte interpretiert. Schreibe einfach $VARIABLE in Anführungszeichen (doppelte, also ") und Dein Problem ist gelöst. Bsp.: ma@gbp301:~ > TESTVAR="EIN TEST" ma@gbp301:~ > for i in $TESTVAR; do echo $i; done EIN TEST ma@gbp301:~ > for i in "$TESTVAR"; do echo $i; done EIN TEST zsh macht's wieder anders, aber so geht's nicht:
hde@acp1130> TESTVAR="file1 file 2 file3" hde@acp1130> for i in $TESTVAR; do echo $i; done file1 file 2 file3 hde@acp1130> for i in "$TESTVAR"; do echo $i; done file1 file 2 file3 hde@acp1130> bash %n@%m:%~ > TESTVAR="file1 file 2 file3" %n@%m:%~ > for i in $TESTVAR; do echo $i; done file1 file 2 file3 %n@%m:%~ > for i in "$TESTVAR"; do echo $i; done file1 file 2 file3 Thorsten -- They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety. - Benjamin Franklin