Il 26/09/2016 09:09, Piviul ha scritto:
beppe ha scritto il 26/09/2016 alle 00:37:
Lo script funziona bene finche' non incontra una directory con spazi:
$ cat tar_backup.sh
#!/bin/bash
data=$data$(date | cut -d ' ' -f6 | cut -c 1-4)
data=$data$(date | cut -d ' ' -f2)
data=$data$(date | cut -d ' ' -f3)
echo $data
#IFS_OLD=$IFS
#IFS=$'\n'
# per controllare la data
sleep 2
for i in $(ls -d /home/prove/*/ | cut -f4 -d'/' | sed 's/\ /\\ /g'); do
tar -cvzf $data'_'${i%%/} '/home/prove/'${i%%/}; done
io credo che il problema risieda nelle linee che hai commentato. Di
default IFS (Internal File Separator) è lo spazio quindi questo ciclo
non funziona bene. Devi appunto decommentare le righe che riguardano
l'IFS.
Poi sinceramente mi sembra anche macchinoso (oltre che non capisco
cosa faccia il comando ${i%%/} ma questo è un limte mio) il ciclo for
che hai costruito...
io il ciclo lo riscriverei così:
for d in $(ls -d /home/prove/*); do
dir=$(basename $d)
tar cvzf "$data_$dir" "$d"
done
in ogni caso se vuoi mantenere la tua versione ocho che tar considera
lo spazio come separatore dei suoi argomenti. Devi quindi quotare i
riferimenti alle dir dentro /home/prove
Ciao
Piviul
i cicli funzionavano tutti correttamente meno che con i nomi directory
contenenti spazi.
Avevo provato sia con IFS=$'\n', sia senza.
Con il tuo ciclo for adesso mi sembrano corretti anche con piu' spazi
nei nomi,
rimettendo IFS=$'\n'.
Grazie 1000!!!
ciao
Beppe
--
le nuvole non hanno regole,
perchè non hanno mai rinunciato
alla libertà di sognare.