Newsgroup: it.comp.os.linux.sys
Titolo: bash - acquisizione intera

leggo in giro che bash non gestisce la dichiarazione di una variabile 
come stringa o numero intero, ok.
 
fino ad oggi per� se avevo un file formattato in questo modo:
 
VALORE NUMERO
 
ad esempio
 
PIPPO 30
 
 
un semplice VARIABILE=$( cat /tmp/pippo.txt | grep PIPPO | awk '{ print 
$2 }' ) era comunque visto come un valore numerico e potevo poi con un 
IF fare una comparazione algebrica ( -le -ge etc..).
 
 
da qualche giorno a questa parte non ne vuole sapere, restituendomi if 
un messaggio chiaro di errore : integer expression expectede.
 
 
allora ho iniziato a "dichiarare" le variabili con
 
let VARIABILE=VARIABILE
 
ed ha funzionato (incredibilmente per qualche mesetto).
 
dopodich� puffete da capo.
 
 
c'� un modo inequivocabile per acquisire un valore numerico catturato da 
un file di testo?
 
sto cercando di capire cosa � cambiato nei miei script, ma francamente 
leggo e rileggo ma non trovo grandi variazioni con le versioni 
precedenti. magari mi � partito un aggiornamento della bash da yast... 
mbho. per� di certo sta che, probabilmente, sbagliavo l'acquisizione 
della variabile gi� all'origine.

 un file di testo?
 
uh... eccolo: nello script acquisisco un'altra variabile richiamando un 
programma in c. Se evito di fare questo, tutto torna nella normalità.
 
Interessante...


trovato: lo script in c che richiamavo mi passava un output formato da 
un buffer sporco. bash, giustamente, lo acquisiva come stringa.
 
 

 era comunque visto come un valore numerico
 
  Gli operatori algebrici traducono le stringhe dei loro argomenti
internamente, ma dal punto di vista della shell sono tutte stringhe.
Non c'è nessun modo per sapere se VARIABILE contiene una stringa di
caratteri ASCII numerici oppure proprio un valore numerico.
 
 
  Ciao,
 
 
-- 
Alessandro Selli 
http://alessandro.route-add.net
 
AVVERTENZA: i messaggi inviati a "trappola" non mi arriveranno.
WARNING: messages sent to "trappola" will never reach me.

 caratteri ASCII numerici oppure proprio un valore numerico.
 
lem@biggy:~$ declare -i STAROBA
lem@biggy:~$ STAROBA=101
lem@biggy:~$ echo $STAROBA
101
lem@biggy:~$ STAROBA=centouno
lem@biggy:~$ echo $STAROBA
0
 
-- 
Bye, Lem
Ceterum censeo ISLAM esse delendum
_________________________________________________________________
Non sprecare i cicli idle della tua CPU, né quelli della tua GPU.
 
http://www.worldcommunitygrid.org/index.jsp
 
http://www.rnaworld.de/rnaworld/
 
http://dnahome.cs.rpi.edu/dna/
 
 
http://www.gpugrid.net/
 

 indicazione di tipo di dato.
 
Da quanto non ti aggiorni? Circa quaranta anni?
 
man bash
 
/typeset
 

 0
 
  Anvedi.
 
 
  Grazie,


> lem@biggy:~$ declare -i STAROBA
 
molto interessante, è pensiero comune e diffuso che non si possa fare, 
invece...
 
grazie.
 

 cat /tmp/pippo.txt | grep PIPPO
 
grep PIPPO /tmp/pippo.txt ti era antipatico? :)

 grep PIPPO /tmp/pippo.txt ti era antipatico? :)
 
Anche io faccio sempre cat+grep, si, il grep diretto
mi è antipatico.
 
 
-- 
Tu non puoi passare!
Sono un servitore del fuoco segreto e reggo la fiamma di Anor!
Il fuoco oscuro non ti servirà a nulla, fiamma di Udur!
Ritorna nell'ombra! TU NON PUOI PASSARE!

 mi è antipatico.
 
Ti diverti a digitare più caratteri e a sprecare cicli di CPU? :-P

 Ti diverti a digitare più caratteri e a sprecare cicli di CPU? :-P
 
Si, tanto non li pago, non sono mica sms :)



 
lol
 
alla fine se quel comando in uno script ci mette 0,003 millisecondi o 
0,002 dai che cambia!
 
personlamente, inoltre, richiama un file proprio di 4 caratteri in croce :)

 0,002 dai che cambia!
 
  Che ci si è abituati a (un'altra) cattiva abitudine.  E la bomba a
tempo ticchetta...
 
 
  Ciao,
