PDA

Visualizza la versione completa : [bash] aiuto per script


Cozza
14-12-2009, 00:54
ciao a tutti
ho fatto questo script che dovrebbe dirmi se in un file c'è una certa stringa e se c'è
alzo un flag che poi userò dopo

il problema è che se alzo il flag dentro il mio ciclo
non conserva il valore assegnato quando esce


#!/bin/sh

flag=0
i=""

cat $HOME/pippo/pippologs/test.txt | while read i
do
if [ "$i" == "testo incriminato" ]
then
s=$i
flag=1
echo $flag #qui mi stampa 1
fi
done

echo $flag #qui mi stampa 0 quindi non entra mai nel ciclo

if [ $flag -eq 1 ]
then
echo "faccio quello che devo fare"
fi





grazie a tutti ciao ciao

vortex87
14-12-2009, 02:38
Leggendo un po' in giro mi sembra di capire che il problema sia nel fatto che le pipe sono eseguite in un'altra shell rispetto allo script principale, però non so bene come risolvere :stordita:

mxa
14-12-2009, 03:35
Cosi' dovrebbe andare.



#!/bin/sh

flag=0
i=""

while read i
do
if [ "$i" == "testo incriminato" ] #attenzione che questo e true se e solo se l'intera riga e' uguale a "testo incriminato" e non se la riga contiene "testo incriminato"
then
s=$i
flag=1
echo $flag #qui mi stampa 1
fi
done < $HOME/pippo/pippologs/test.txt

echo $flag #dovrebbe stampare 1

if [ $flag -eq 1 ]
then
echo "faccio quello che devo fare"
fi

Cozza
14-12-2009, 23:12
Originariamente inviato da mxa
Cosi' dovrebbe andare.



#!/bin/sh

flag=0
i=""

while read i
do
if [ "$i" == "testo incriminato" ] #attenzione che questo e true se e solo se l'intera riga e' uguale a "testo incriminato" e non se la riga contiene "testo incriminato"
then
s=$i
flag=1
echo $flag #qui mi stampa 1
fi
done < $HOME/pippo/pippologs/test.txt

echo $flag #dovrebbe stampare 1

if [ $flag -eq 1 ]
then
echo "faccio quello che devo fare"
fi





funziona !
incredibile !
in effetti il testo deve essere contenuto ma andiamo un passo per volta :dottò:

grazie a tutti ciao ciao

Loading