Newsgroup: it.comp.os.linux.sys
Titolo: variabile divertente (ma utile...)

$ START=qualche_numero
$ END=qualche_numero_piu_grande
$ SECONDS=$(((END-$START)))
$ echo $SECONDS
uhmmm che strano numero
aspetto un po' e provo di nuovo
$ echo $SECONDS
uuhhhmmmm il numero � cambiato. Avr� sbagliato la sintassi? Mi � entrato 
un Uorm :)
uuuuuuhhhm: apro una nuova shell:
$echo $SECONDS
mmmmhhhh ora ho capito :-)
$ man bash:
        SECONDS
               Each  time this parameter is referenced, the number of 
seconds since shell invocation is returned.  If a value is assigned to 
SECONDS, the value returned upon subsequent references is the number of 
seconds since the assignment plus the value assigned.  If SECONDS is 
unset, it loses its special properties, even if it is subsequently reset.
Praticamente � quasi readonly. Non si pu� reimpostare, ma si pu� dare 
solo un "unset SECONDS". Una volta dato l'unset, allora diventa 
sovrascrivibile :)
*Morale*:
per sapere quanto ha impiegato uno script (dove la prima riga richiama 
una shell), non c'� bisogno di dare un "date +%s" all'inizio, poi di 
nuovo alla fine, e poi fare la differenza: basta lanciare un echo 
$SECONDS alla fine.
E alla fine mi sono divertito con questo:
minuti=$(($SECONDS/60*60/60)); secondi=$(($SECONDS-$minuti*60)); echo 
$minuti minuti e $secondi secondi
-- 
echo onailimissaM | awk 'BEGIN { FS = "" }
{ for (i = NF; i >= 1; i-- )
   printf $i }'; echo

 $SECONDS alla fine.
Basta usare time.
-- 
Flavio Visentin
Ubuntu in Zulu significa "Non so usare Debian". (cit. CtRiX)


si anche. Certo.
Per� certe volte mi metto a pettinare gli script, e gli voglio fare 
stampare alcune info in formato idiot-readable :-)



Facebook: Massimo Bacilieri

 BTW, siccome l'aritmetic evaluation va solo per interi
si lo so. guarda: quel "*60/60" non so da dove mi è uscito fuori :)


 echo $minuti min $secondi sec
"Quasi" sempre vero (in questo caso sicuramente vero). Ci sono alcuni casi 
in cui usare o no il dollaro all'interno di $(( ... )) fa la differenza. Per 
esempio, quando devi lavorare su $1, $2, etc., ovviamente questi due sono 
differenti:
num=24
$ echo $((num + 1))   # 25
$ echo $((num + $1))   # 24 + $1
E anche quando si vuole usare $#, $? etc. in una arithmetic evaluation.
Ma ci sono anche dei casi piu' subdoli. Ad esempio questo:
$ a="2+2"
$ echo $((a * 2))
8
$ echo $(($a * 2))
6
Comunque e' vero, in tutti i casi "normali" usare il $ o no all'interno di 
$(( ... )) non fa differenza.

 6
Eh attenzione, qui l'errore è concettuale, non è una questione di
ambiguità. L'aritmetic evaluation ovviamente funziona su variabili
*numeriche*. Ora, il problema è che in bash non esiste il casting delle
variabili, per cui cosa contenga una variabile (numero o stringa) lo
devi sapere tu.
Tuttavia se fai l'aritmetic evaluation devi tenere conto che saranno
trattati solo i valori *numerici*.
Perciò, quando scrivi a="2+2"; echo $((a * 2))
commetti un errore concettuale, poiché utilizzi una *stringa* al posto
di un valore numerico. Per tua "fortuna" - o sfortuna, dipende - la
stringa in questo caso può essere espansa in un valore numerico secondo
le regole di valutazione aritmetica, per cui dentro il comando "2+2"
viene automaticamente convertito nel suo valore 4, e qui poi
moltiplicato per 2.
Se vai a scrivere $(($a * 2))
invece fai ancora un'altra cosa, ovvero metti la stringa "2+2" /as is/
all'interno della valutazione aritmetica, per cui cambi l'ordine di
espansione. Qui ottieni: $(( 2+2 * 2)) e allora viene prima eseguita la
moltiplicazione per ordine di priorità.
In realtà, come vedi, non c'è nessuna ambiguità, ma solo un uso
scorretto della sostituzione numerica. Se *sai* cosa stai facendo, puoi
usarlo a dovere, se *non* sai cosa stai facendo, ti infili invece in un
ginepraio.
Il tutto infatti viene a cadere se invece della stringa "2+2" metti una
stringa *non* convertibile in numero: ottieni un errore e basta.


 stringa *non* convertibile in numero: ottieni un errore e basta.
oppure 0:
$ a=ghjkytreefgh
$ echo $((a))
0
Generalmente si', ma vedi l'esempio echo $((b)) sopra. E, ripeto, sono 
comunque d'accordo che per usi "normali" non ci sono problemi. (e che 
comunque e' sempre meglio costruire le cose in modo che non ci sia spazio 
per le ambiguita')

 *Morale*:
La morale è che i BLOG sono fatti per queste cose.


vedi che c'è uno che ha pubblicato un link ad una barzelletta.
Dai, vai .... vallo a dire anche a lui, dai ... continua la tua azione 
di paladino per la difesa di usenet.
Vogliamo una usenet più pulita e più morigerata, per il nostro futuro e 
per quello dei nostri figli. Sei il nostro capo, nostra unica speranza 
nonché nostro vate(r).


 nonché nostro vate(r).
La questione non è nei termini che tu poni.
Tempo fa anche davide pubblicava settimanalmente le sue storie.
A molti facevano piacere ma alla fine, visto che erano OT, ha avuto 
l'onestà di non pubblicarle più.
Fai così anche tu e smetti una buona volta di rompere i maroni e 
soprattutto un icol.sys degno di tale nome e non un 
icol.bambini.capricciosi.
Mettiti un forum su 
maxadamo.dyndns.org
 e porta il tuo cazzeggio li.
my 2c

 di paladino per la difesa di usenet.
Senza voler giustificare l'OT, mi preme sottolineare come DzU abbia mandato 
nel 2010 ben 3 messaggi di cui uno OT metre un tale MaxAdamo nello stesso 
periodo ne abbia inviati 459 di cui circa il 50% (sono anche troppo buono) 
inutili, stupidi o comunque OT.
Penso di poter interpretare il pensiero comune affermando che DzU non 
"disturba" un centesimo di quanto "disturbi" tu.



Accetto critiche costruttive. Capito il senso.



va bene: 2c spesi bene questa volta!


 Senza voler giustificare l'OT
Con chi parli? <beg>

 La morale è che i BLOG sono fatti per queste cose.
'Sta cosa mi suona controversa. Posto che stiamo parlando di Adamo (ovvero 
una persona che "cammina sul filo del rasoio"), secondo la tua logica il 
concetto stesso di Usenet e` morto e sepolto, ovvero non e` piu` possibile 
utilizzare tale mezzo per intavolare discussioni, cosa peraltro riportata a 
chiare lettere nel seppur striminzito manifesto di questo gruppo. 
Personalmente capisco l'astio nei confronti di Adamo, ma cerchiamo di 
valutare oggettivamente cio` che si dice
Enrico
P.S. Visto che citi Davide Bianchi, e che quest'ultimo gestisce una mezza 
specie di blog (il suo sito), vorrei far notare che io stesso mi sono 
ritrovato dei post finiti "nel dimenticatoio" nel momento in cui chiedevo 
ulteriori spiegazioni o contraddivo le parole di Davide stesso. Una bella 
differenza rispetto a un sistema aperto come Usenet, direi

 'Sta cosa mi suona controversa.
guarda, non foss'altro che Crononauta e Antani si sono inseriti in 
questo thread per discutere "tecnicamente" della questione, io, potrei 
anche avergli dato ragione al 100%.
E effettivamente non mi pare di aver raccontato cosa succede nella mia 
sala macchine, ne tantomeno ho parlato di turismo, di arte o di politica.
L'ho buttata lì, con un esempio di una riga di comando e qualcuno si è 
anche messo a discutere.
Però, se per loro usenet deve essere quella cosa tetra, dove si deve 
passare il tempo a frustare i lamer che invece di postare su iniziare 
postano qui, dove si può solo chiedere ciò che è nel novero delle cose 
che loro hanno più o meno stabilito, dove ci deve essere una sola voce e 
deve dominare sempre una sorta di pensiero unico... contenti loro. Non 
so che dire, forse sono maggioranza quindi non aggiungo altro.
IMHO: sarebbe meglio che chi la pensa a questa maniera frequentasse solo 
gruppi moderati.
Perché poi, non si può criticare sempre gli altri, salvo poi (vedi 
whiplash) buttarsi a capofitto in una discussione sugli ebrei che non 
c'entra una mazza con il manifesto di alcun gruppo.
