Sintassi di base della riga while read
La seguente sintassi viene utilizzata per la shell bash per leggere un file utilizzando il ciclo while:
mentre leggere -Rlinea;
fare
buttato fuori '$line';
fatto <file di input
L'opzione '-r' nella sintassi sopra menzionata è passata al comando di lettura che evita l'escape della barra rovesciata dall'essere interpretata. L'opzione 'input_file' ha rappresentato il nome del file a cui si desidera accedere utilizzando il comando 'read'.
Il separatore di campo interno abbreviato come IFS può essere utilizzato prima che il comando di lettura sia impostato sulla stringa nulla che impedisce che gli spazi iniziali o finali vengano tagliati.
mentre IFS=leggere -Rlinea;
fare
buttato fuori $line;
fatto <file di input
Apri il terminale usando Ctrl + Alt + t scorciatoia e quindi esegui i seguenti comandi su di esso.
Esempio n. 1: Lettura file riga per riga
Facciamo un esempio in cui supponiamo di avere un file chiamato OS.txt contenente i nomi di tutte le importanti distribuzioni Linux. Se vuoi leggere un file senza usare il comando 'cat', a questo scopo puoi eseguire il seguente comando per eseguire l'attività specifica. Useremo il ciclo while che leggerà ogni riga dal file OS.txt e memorizzerà il contenuto in ogni passaggio in una variabile $line che potrai visualizzare in seguito.
Incolla i seguenti nomi delle distribuzioni Linux nel file OS.txt
CentOS
Ubuntu
Debian
LinuxMint $mentre leggerelinea;
fare
buttato fuori $line;
fatto <OS.txt
Dal comando sopra, otterrai la seguente risposta nella finestra del terminale:
Esempio n. 2: lettura del file utilizzando lo script bash
Crea un file bash e quindi aggiungi il codice indicato di seguito in questo file per leggere il contenuto del file. È possibile memorizzare il file di testo precedente in una nuova variabile $nomefile e la variabile $n viene utilizzata per mantenere il valore di ciascuna riga. Ora, usando il ciclo while leggeremo ogni riga da un file con un particolare numero di riga.
#!/bin/bashnome del file='OS.txt'
n=1
mentre leggerelinea;
fare
# per leggere ogni riga
buttato fuori 'Linea di distribuzione del sistema operativo n.$n:$line'
n= $((n+1))
fatto < $nomefile
Salva il file con un nome OSinfo.sh e digita il seguente comando sul terminale per eseguire lo script bash sopra.
$bashOSinfo.sh
Ora, esegui il comando cat per visualizzare il contenuto del file originale.
$gattoOS.txt
Metodo alternativo per la lettura dei file
Usando il passaggio del nome del file da un comando
In un file bash, è necessario aggiungere il seguente script di codice. In questo script, dobbiamo prendere un nome di file come argomento. Innanzitutto, il valore di un argomento viene letto da una variabile $1 che ha un nome file per la lettura. Verificherà che il nome del file esista nella posizione specificata, quindi utilizzando il ciclo while leggerà un file riga per riga simile all'esempio precedente.
#!/bin/bashnome del file=$ 1
mentre leggerelinea;fare
# leggendo ogni riga
buttato fuori $line
fatto < $file.testo
Salva lo script sopra con il nome 'Readline.sh' ed esegui il seguente comando sul terminale per eseguire lo script sopra menzionato:
Nell'output sopra, osserverai che il file 'OSinfo.txt' passa come argomento e il contenuto di 'OSinfo.txt' verrà visualizzato dopo aver rimosso gli spazi extra. È possibile visualizzare il contenuto del file originale eseguendo 'cat OSinfo.txt'.
Conclusione
In questo articolo, abbiamo discusso come leggere le righe usando il ciclo while nella programmazione bash. Abbiamo implementato diversi metodi utilizzando lo script bash oppure puoi semplicemente utilizzare un file di testo per eseguire la lettura di un file riga per riga. Se sei interessato a saperne di più esempi, utilizzando la sintassi sopra menzionata puoi eseguire anche sul tuo sistema. Spero che questo tutorial ti sia piaciuto e che sia unico per te. Informati in caso di errore.