PDA

Visualizza la versione completa : Script in bash


poe84it
06-11-2007, 01:31
Ho scritto uno script per bash per modificare un imput del genere:

commento:1.2.3.4-1.2.3.5

in

1.2.3.4 - 1.2.3.5 , 000 , commento

ovvero per trasformare gli ipfilter per peerguardian nel formato di MLDonkey/eMule


#!/bin/bash
cat - | while read -d ":" COMMENT IPRANGE ; do
echo $IPRANGE | read -d "-" STARTIP ENDIP ;
echo "$STARTIP - $ENDIP , 000 , $COMMENT" ;
done

Il problema che non funziona... e non capisco il perch...

mi sapreste aiutare?

poe84it
13-04-2011, 20:21
dopo un po' di esperienza con bash e con gli script, e dopo aver riesumato l'account di html.it mi do una risposta da solo:



#!/bin/bash
cat - | while IFS=":" read COMMENT IPRANGE ; do
echo $IPRANGE | while IFS="-" read STARTIP ENDIP ; do
echo "$STARTIP - $ENDIP , 000 , $COMMENT" ;
done;
done


La variabile d'ambiente IFS mi permette di specificare il carattere di divisione tra campi, specificandolo davanti al comando mi assicuro che solo in quell'istanza di shell quella variabile sia modificata, il comando read non funziona se non in presenza di un ciclo while o until.

Buona sorte.

psykopear
13-04-2011, 20:44
Originariamente inviato da poe84it
dopo un po' di esperienza con bash e con gli script, e dopo aver riesumato l'account di html.it mi do una risposta da solo:



#!/bin/bash
cat - | while IFS=":" read COMMENT IPRANGE ; do
echo $IPRANGE | while IFS="-" read STARTIP ENDIP ; do
echo "$STARTIP - $ENDIP , 000 , $COMMENT" ;
done;
done


La variabile d'ambiente IFS mi permette di specificare il carattere di divisione tra campi, specificandolo davanti al comando mi assicuro che solo in quell'istanza di shell quella variabile sia modificata, il comando read non funziona se non in presenza di un ciclo while o until.

Buona sorte.

cavolo, ti ci voluto un p :D

Loading