La funzione “usa_printf” è molto utile in quegli script che hanno bisogno di stampare un output più grande di 1kB in quanto ogni finestra creata con zenity non riesce a gestire un maggiore numero di Byte.
La funzione ripartisce l'output in parti non più grandi di 1kB. Printf è un comando in stile funzione print di C, per aver maggiori info dal terminale lanciate il comando: info printf
Sotto sono inserite due versioni della funzione. La prima è la vecchia funzione, invece la seconda è la versione aggiornata.
1)
usa_printf(){
inizio=0
fine=1023
p=1
while echo; do
printf "${temp:inizio:fine}" | zenity --text-info \
--title="DimensFiles - parte $p" &
inizio=$fine
fine=$(( fine+1024 ))
if [ ${#temp} -lt $fine ]; then
p="ultima"
printf "${temp:inizio:fine}" | zenity --text-info \
--title="DimensFiles - parte $p"
break
fi
p=$(( p+1 ))
done
}
2)
usa_printf(){
inizio=0
fine=1024
p=1
while [ $p != ultima ]; do
printf "${temp:inizio:fine}" |
zenity --text-info --title="DimensFiles - \
directory: $dir - parte $p" &
inizio=$(( inizio+1024 ))
fine_ipotetica=$(( inizio+fine ))
if [ ${#temp} -lt $fine_ipotetica ]; then
p="ultima"
printf "${temp:inizio:fine}" | zenity --text-info \
--title="DimensFiles - directory: $dir - parte $p"
break
fi
p=$(( p+1 ))
done