[PLUTO-help] Ora èbash :-(

new newelski a altern.org
Mar 6 Maggio 2003 18:31:09 CEST


On Mon, 5 May 2003 18:25:40 +0200
Stefano Callegari <stefano a omniluxlighting.it> wrote:


> > 
> > for i in `cat $TEMP_TESTO | grep -e "\ \+§§" | awk -F' §§ ' {'print $2'} | awk -F' ' {'print $1'}`
> > do
> > vattelapesca
> > done
> > 
> > 
> > dovrebbe funzionare!
> 
> Non credo.
> 
> Il fatto è che cat ... | grep ... | awk ... | awk ... mi restituisce
> più righe/valori mentre io devo verificarne uno alla volta.

Non so quale sia il contenuto del file $TEMP_TESTO e di conseguenza cosa fa la serie di pipe successive.
il fatto che usi while read variabile mi fa pensare che dove gestire n righe con una sola colonna ( se fossero due o + colonne il ciclo for così come è messo non farebbe ciò che intendi). Per cui in questo caso il for da me indicato fa la stessa cosa del while senza però usare pipe...quindi non dovresti avere lo stesso problema delle variabili che vengono perse.

> 
> E poi non capisco, al fine dei 'parent' e 'child' che differenza ci sia
> tra un ciclo for e uno while :-)
> 
nel tuo caso fa differenza...tu usi una pipe... | while read variabile...
è ovvio che le variabili che usi nel ciclo non siano visibili dal processo "padre".
Serebbero invece simili i cicli se invece di usere la pipe usassi la ridirezione tramite <
per farti capire faccio un esempio:

questo script banale mostre come funzionano tre tipi di cicli.
######################################
file=file.txt

###################################
# il file file.txt contiene:
#	1
#	2
#	3
#	4
#	5
#	6
#
####################################
a=0
c=0
f=0

for i in 1 2 3 4 5 6
do
echo $i
let a=$a+1
done
echo $a

echo "fine primo ciclo"

while read b
do
echo $b
let c=$c+1
done < $file

echo $c 

echo "fine secondo ciclo"

cat $file |while read e
do
echo $e
let f=$f+1
done

echo $f 

echo "fine terzo ciclo"
#####################################


l'output di questo script è il seguente:

1
2
3
4
5
6
6
fine primo ciclo
1
2
3
4
5
6
6
fine secondo ciclo
1
2
3
4
5
6
0
fine terzo ciclo

come vedi nei primi due cicli la variabile che viene incrementata ad ogni 'run' viene mantenuta (valore finale 6), nel terzo no.
Mi stupirei se non fosse così.

> > ps usi l'awk in modo 'strano'.... ;-)
> 
> Dimmi, dimmi. Cosa intendi per strano? L'uso in se o la forma? 

No! niente di particolare..non sei l'unico che lo usa così! ;-)
la sintassi "standard" è awk ' pattern { action}' 
tu e altri usate awk {' action' }.
tutto qui! non preoccuparti.


ciao
New

----------------------------------------------------------

Must I hold a candle to my shames?
		-- William Shakespeare, "The Merchant of Venice"


More information about the pluto-help mailing list