View Full Version : [Shell Linux] while read ...
Ciao.
M'e` capitato di fare qualche scriptino che funzionasse tipo:
cat file | mioscript.sh
in modo che mioscript.sh leggesse da file con un
while read line; do ...
Mi chiedevo: come si puo` inserire il tutto nello script medesimo,
cosi` che non sia piu` costretto a usare
cat file | mioscript.sh
ma basti invocare mioscript.sh ?
Grazie,
Guldo
maxithron
06-03-2004, 11:20
se non ho capito male ti basta dare chmod 755 mioscript.sh
Grazie, ma mi sa che mi sono spiegato male.
Riformulo:
In uno script, voglio leggere un file di testo riga per riga, per eseguire determinate operazioni su ogni riga, una riga alla volta, e accodare il risultato in un altro file.
Spero che ora sia piu` chiaro. :what:
Grazie,
Guldo
exec < /a/b/c
il nome del file puo` anche stare in una variabile:
exec < $FILE
dopo questa istruzione la read legge sul file
La spiegazione sta nella gestione dei file descriptor.
Il '<' senza niente presuppone che ci sia a sinistra il descriptor che di default riferisce a stdin (che e` 0, 1 o 2 non ricordo). Quindi il file messo a destra viene collegato a tale descriptor (sostituendo l'stdin).
Se interessa anche conservare l'stdin, e` possibile attaccarlo in uno degli altri descriptor per poi recuperarlo piu` tardi.
Penso una exec con il descriptor pulito a sinistra e l'stdin a destra.
Grazie mille!
Perdona la mia ignoranza... ma come si usa tutto cio` in uno script?
Non ci riesco mica...
Dovrei assegnare il risultato di quella cosa ad una variabile, per poi modificarla (sed) e ridirigerla in un altro file; ma non mi riesce...
Grazie!
Guldo
Te devi solo fare la exec una volta all'inizio e questo leva la necessita` del cat.
Il resto rimane uguale a come avevi gia` fatto!
exec < /tmp/myfile
read LINE
while [ -n "$LINE" ] ; do
....blabla.......
....bliblo.......
read LINE
done
Originariamente inviato da Pardo
Il resto rimane uguale a come avevi gia` fatto!
... davo per scontato che l'avrei dovuto cambiare... :fagiano:
Grazie MILLE :ave:
Guldo
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.