beppe ha scritto il 26/09/2016 alle 00:37:
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.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
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" donein 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