Bash Script a While Loop durante la lettura di Stdin

Bash Script a While Loop durante la lettura di Stdin
Il concetto "flusso" in un computer si applica a qualcosa che potrebbe spostare i dati. Qualsiasi istruzione che stai eseguendo nel terminale sarebbe in qualsiasi posizione del flusso. Queste posizioni possono essere un'origine o un deflusso. Prendiamo una rapida panoramica del flusso STDIN specifico. In Linux, Stdin si riferisce all'ingresso predefinito o standard. L'input che richiede deve essere un testo. Per acquisire dati o informazioni da te, è il gestore dei file che la tua procedura lettura. Quasi tutti i flussi sono visualizzati in Linux come se fossero directory. Potremmo leggere/scrivere informazioni da tutti questi flussi, esattamente come puoi leggere/scrivere un documento. Utilizzando un numero di descrittore di file speciali relativi a esso fornisce un ottimo approccio per accedere a un documento. Ci sono stati valori speciali assegnati a ognuno di questi per tutta la situazione di tali flussi. Stdin ha un valore di 1.

Stdin: 1

Cominciamo comprendendo attraverso la pratica sul flusso di stdin usando mentre i loop. All'inizio, avremo un esempio di base della stdin come lettura. Eseguire le istruzioni di seguito. L'istruzione richiederebbe l'input della tastiera. In questo, tramite Stdin, lo strumento di lettura ottiene il testo.

$ leggi

Esempio 01:

Crea un nuovo file, "Input.sh "e aggiungi lo script aggiunto ad esso. Abbiamo usato il ciclo while per leggere il testo da parte di un utente dal terminale e stamparlo. Lo script è denominato con un "/dev/stdin" come il primo parametro $ 1, in cui l'approccio corrispondente legge l'input regolare dalla console. Salva questo file e chiudilo.

Apri il terminale ed esegui il file appena aggiornato "Input.sh "come:

$ Bash Input.sh

Quando esegui il file utilizzando il comando bash, verrai saltato alla riga successiva per scrivere qualcosa. Come puoi vedere di seguito, l'utente ha scritto un testo a una riga e premere Invio.

Il testo scritto da un utente verrà letto per primo e stampato nella riga successiva come di seguito.

Puoi anche fornire uno spazio tra il tuo input di testo come sotto.

Esempio 02:

Ora leggeremo il testo dal file. Aggiorna lo stesso file "Input.sh "fornendo il fileName" Script.Sh "come il primo parametro da $ 1. L'approccio corrispondente legge da questo documento.

Abbiamo le seguenti informazioni di testo nel file "Script.sh "come sotto. Controlliamo come funziona.

Eseguire il file “Input.sh "usando il comando bash. Vedrai che il flusso di lettura legge dal file fornito "Script.sh "e stampalo nel terminale come sotto.

$ Bash Input.sh

Esempio 03:

Facciamo un esempio per leggere ogni directory uno per uno usando stdin. Devi considerare il parametro -u con la lettura. In questo, "-u 1" implica "Leggi da stdin."In questo codice," riga "rappresenta il nome file e l'incremento" i ++ "viene utilizzato per saltare alla directory o al file successivo. Conterrà anche il numero di file che è stato letto anche. Eseguiamo questo codice per controllare cosa succede dopo.

Eseguire il file bash “Input.sh". Ti chiederà di inserire un po 'di testo per saltare al file successivo. Qui "Comm" rappresenta il nome del primo file.

$ Bash Input.sh

Mentre continua a questo, puoi vedere che abbiamo un elenco di file che abbiamo passato.

Esempio 04:

In questo esempio, abbiamo due file correlati da cui leggere. Assegna i privilegi richiesti ad entrambi i file utilizzando il comando "chmod" come di seguito.

CHMOD U+X FileName

Scrivi il codice seguente nel file “Input.sh". Fino a quando il ciclo "while" non riceve linee, stamperà quelle linee. Mentre la "riga" si riferisce a un altro file "script.sh".

Abbiamo il codice seguente nel file "Script.sh". Mentre il ciclo è in esecuzione, sta stampando il numero di linea.

Eseguire entrambi i file utilizzando ""./"All'inizio del nome file e separazione usando" "|" nel guscio. Vedrai che sta stampando i numeri di riga durante la stampa del testo anche dai file. È un metodo molto semplice per correlare due file o il loro contenuto.

$ ./script.Sh | ./ingresso.sh

Esempio 05:

Terminiamo questo argomento avendo questo esempio semplice ed efficiente. Abbiamo un file "Script.sh "con il contenuto o nomi seguenti. Leggeremo questi nomi uno per uno da un altro file.

Aggiorna il file "Input.SH: con lo script di seguito. In questa sceneggiatura, abbiamo un giro di tempo per elaborare "stdin". Abbiamo usato Read "Read -r" durante la lettura da un altro file come diverso dall'input standard. D'altra parte, usando "-u" come specifico per bash, l'output standard dell'utente nel terminale. Qui, il "nome" è il testo o il contenuto del file "Script.sh". L'opzione "-P" viene utilizzata per "leggere". L'istruzione Read leggerà il "nome" da un altro file e chiederà se si desidera eliminarlo o no. La parola chiave "IP" viene utilizzata per la risposta dell'utente per affermare l'azione di eliminazione. Qualunque sia la risposta dell'utente, la stamperà. Nell'istruzione "if", verificherà se l'input standard dell'utente è uguale a "y", stamperà alcuni messaggi come menzionando che ha eliminato il "nome". Questo processo verrà ribadito fino all'ultimo contenuto del file "Script.sh".

Diamo un'occhiata all'output del codice sopra. Eseguire il file utilizzando il comando bash. Il sistema ti chiederà se vuoi eliminare questo "nome" o no. Immettere "Y" e toccare "Invio".

$ Bash Input.sh

Qui sulla premuring "Y", stamperà "Y" e mostrerà un messaggio che ha eliminato il particolare "nome". Dopodiché, passerà a un altro "nome".

Ti chiederà di eliminare i nomi fino a tutti i nomi o contenuti del file “Script.sh "sono stati messi in piedi come di seguito.

Conclusione:

Abbiamo superato magnificamente tutti i semplici esempi di input standard mentre usano il ciclo "while" nello script bash.