|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Nov 2002
Città: Morio Cho
Messaggi: 2595
|
[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
__________________
Sono GULDO, non Guido! Cioè, certo che guido... Bé, insomma, avete capito ![]() Linux 2.6.26|Debian|Debian@Hwupgrade|Debian Clan|Solo Puffin ti darà forza e grinta a volontà! NERD rank 62|Milla Jovovich|大事な物はいつも形の無い物だけ Sito e Forum sul Giappone|La mia libreria su aNobii |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
|
se non ho capito male ti basta dare chmod 755 mioscript.sh
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n; Utilizzando atomi trivalenti drogheremo il silicio di tipo p; Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2002
Città: Morio Cho
Messaggi: 2595
|
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. ![]() Grazie, Guldo
__________________
Sono GULDO, non Guido! Cioè, certo che guido... Bé, insomma, avete capito ![]() Linux 2.6.26|Debian|Debian@Hwupgrade|Debian Clan|Solo Puffin ti darà forza e grinta a volontà! NERD rank 62|Milla Jovovich|大事な物はいつも形の無い物だけ Sito e Forum sul Giappone|La mia libreria su aNobii |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Dec 2000
Messaggi: 1187
|
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. Ultima modifica di Pardo : 06-03-2004 alle 15:49. |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2002
Città: Morio Cho
Messaggi: 2595
|
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
__________________
Sono GULDO, non Guido! Cioè, certo che guido... Bé, insomma, avete capito ![]() Linux 2.6.26|Debian|Debian@Hwupgrade|Debian Clan|Solo Puffin ti darà forza e grinta a volontà! NERD rank 62|Milla Jovovich|大事な物はいつも形の無い物だけ Sito e Forum sul Giappone|La mia libreria su aNobii |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Nov 2002
Città: Morio Cho
Messaggi: 2595
|
![]()
__________________
Sono GULDO, non Guido! Cioè, certo che guido... Bé, insomma, avete capito ![]() Linux 2.6.26|Debian|Debian@Hwupgrade|Debian Clan|Solo Puffin ti darà forza e grinta a volontà! NERD rank 62|Milla Jovovich|大事な物はいつも形の無い物だけ Sito e Forum sul Giappone|La mia libreria su aNobii |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Dec 2000
Messaggi: 1187
|
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! Codice:
exec < /tmp/myfile read LINE while [ -n "$LINE" ] ; do ....blabla....... ....bliblo....... read LINE done |
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Nov 2002
Città: Morio Cho
Messaggi: 2595
|
Quote:
![]() Grazie MILLE ![]() Guldo
__________________
Sono GULDO, non Guido! Cioè, certo che guido... Bé, insomma, avete capito ![]() Linux 2.6.26|Debian|Debian@Hwupgrade|Debian Clan|Solo Puffin ti darà forza e grinta a volontà! NERD rank 62|Milla Jovovich|大事な物はいつも形の無い物だけ Sito e Forum sul Giappone|La mia libreria su aNobii |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:20.