[bglug] dvd-slideshow: printf da errore un computer si ed uno no
Gian Paolo Ghilardi
gpghilardi@gmail.com
Gio 29 Maggio 2008 22:37:21 CEST
Il giorno 29/mag/08, alle ore 21:21, Jimmi ha scritto:
>> dario.anzani@cheapnet.it ha scritto:
>> Perverso comunque usare la shell per fare ste' cose, IMHO....
>
> Se funzionasse perchè no? Se già trovi programmi che fanno bene le
> cose
> una alla volta, è meglio cucirle assieme :)
>
>> 1) sostituendo manualmente tutte le occorrenze di funzioni
>> internazionalizzate
>> (ad esempio printf) con i separatori e/o caratteri speciali da
>> inglesi a
>> italiani - metodo lungo e poco efficace
>
> non comprendo bene, nel caso di una riga come questa (n. 5415):
> x1_dec=`printf %3.3f "$x1" | awk -F. '{print "0."$2}'`;
Sembra un modo alquanto "eclettico" per prendere un numero decimale
(formato: solo 3 cifre per le unità e 3 per i decimali) e stampare
solo la parte dopo lo 0 (ossia 0 + la parte decomale di $x1).
Cioè dato un numero tipo 123.456 il risultato dovrebbe essere 0.456.
Il problema è che la shell si rifiuta di trattare numeri decimali come
appunto 123.456, mentre non ha problemi con l'intero 123.
Per capirci:
Wintermute:~ jp80$ x1=123
Wintermute:~ jp80$ x1_dec=`printf %3.3f "$x1" | awk -F. '{print
"0."$2}'`;
Wintermute:~ jp80$ echo $x1_dec
0.
Wintermute:~ jp80$ x1=123.456
Wintermute:~ jp80$ x1_dec=`printf %3.3f "$x1" | awk -F. '{print
"0."$2}'`;
-bash: printf: 123.456: invalid number
La stessa cosa vale anche se si pone x1="123.456" (ossia marcandolo
esplicitamente come stringa).
Non so cosa serva quell'estratto, ma pare non funzionare (almeno sul
mio Mac). o_O'
Se lo scopo è quello, credo che funzioni qualcosa come (senza il
controllo sulla terza cifra decimale):
Wintermute:~ jp80$ x1=123.456
Wintermute:~ jp80$ x1_dec="0.$(echo $x1 | cut -f2 -d'.')"
Wintermute:~ jp80$ echo $x1_dec
0.456
(si può fare di meglio, ma son stanco... abbiate pietà ^^ )
Ciao.
JP
Maggiori informazioni sulla lista
bglug