Bash -manus til mens du løkker mens du leser stdin

Bash -manus til mens du løkker mens du leser stdin
Konseptet "strøm" i en datamaskin gjelder noe som kan flytte data. Enhver instruksjon du utfører i terminalen vil være i enhver posisjon av strømmen. Disse stillingene kan være en opprinnelse eller en utstrømning. La oss få en rask oversikt over den spesifikke STDIN -strømmen. I Linux refererer STDIN til standard- eller standardinngang. Innspillet det krever må være en tekst. For å skaffe deg data eller informasjon fra deg, er det filbehandleren som prosedyren din lesning. Nesten alle strømmer blir sett i Linux som om de er kataloger. Vi kan lese/skrive informasjon fra alle disse strømningene, akkurat som du kan lese/skrive et dokument. Ved å bruke et spesielt filbeskrivelsesnummer relatert til det gir en flott tilnærming for å få tilgang til et dokument. Det har vært spesielle verdier tildelt hver og en av disse gjennom situasjonen med slike strømmer. Stdin har en verdi på 1.

STDIN: 1

La oss begynne med å forstå gjennom praksis om stdin -strømmen ved hjelp av mens løkker. Først først vil vi ha et grunnleggende eksempel på STDIN som lest. Utfør instruksjonen nedenfor. Instruksjonen vil kreve innspill. I dette, gjennom stdin, får leseverktøyet teksten.

$ Les

Eksempel 01:

Lag en ny fil, “Input.sh ”og legg til det vedlagte skriptet til det. Vi har brukt mens Loop for å lese teksten av en bruker fra terminalen og skrive ut den. Skriptet er navngitt med en "/dev/stdin" som den aller første $ 1 -parameteren, der den tilsvarende tilnærmingen leser den vanlige inngangen fra konsollen. Lagre denne filen og lukk den.

Åpne terminalen, og kjør den nylig oppdaterte filen “Input.sh ”som:

$ bash input.sh

Når du utfører filen ved hjelp av bash -kommandoen, vil du bli hoppet til neste linje for å skrive noe. Som du kan se nedenfor, har brukeren skrevet en en-linjetekst og trykk Enter.

Teksten skrevet av en bruker vil bli lest opp først og skrevet ut på neste linje som nedenfor.

Du kan til og med gi ett mellomrom mellom tekstinngangen din som nedenfor.

Eksempel 02:

Nå skal vi lese teksten fra filen. Oppdater den samme filen “Input.SH ”ved å gi filnavnet“ skript.SH ”som den aller første $ 1 -parameteren. Den tilsvarende tilnærmingen lyder fra dette dokumentet.

Vi har følgende tekstinformasjon i filen “Skript.sh ”som nedenfor. La oss sjekke hvordan det fungerer.

Utfør filen “Input.sh ”ved hjelp av bash -kommandoen. Du vil se at lesestrømmen leses ut fra den medfølgende filen “Skript.sh ”og skriv den ut i terminalen som nedenfor.

$ bash input.sh

Eksempel 03:

La oss ha et eksempel å lese hver katalog en etter en ved hjelp av stdin. Du må vurdere parameteren -u med lesen. I dette innebærer “-u 1” “Les fra stdin.”I denne koden representerer“ Line ”filnavnet, og økningen“ I ++ ”brukes til å hoppe over til neste katalog eller fil. Det vil også telle filnummeret som også er lest. La oss kjøre denne koden for å sjekke hva som skjer videre.

Utfør bashfilen “Input.sh ”. Det ber deg om å legge inn litt tekst for å hoppe over til neste fil. Her representerer “comm” navnet på den første filen.

$ bash input.sh

Mens du fortsetter dette, kan du se at vi har en liste over filer som vi har gått gjennom.

Eksempel 04:

I dette eksemplet har vi to relaterte filer å lese fra. Tilordne de nødvendige privilegiene til begge filene ved å bruke kommandoen “CHMOD” som nedenfor.

chmod u+x filnavn

Skriv koden nedenfor i filen “Input.sh ”. Inntil "mens" -løkken får linjer, vil den skrive ut disse linjene. Mens "linjen" refererer til en annen fil "skript.sh ”.

Vi har koden nedenfor i filen “Skript.sh ”. Mens løkken kjører, skriver den ut linjenummeret.

Utfør begge filene ved å bruke “”./”I starten av filnavnet og separering ved bruk av“ ”|” i skallet. Du vil se at det også skriver ut linjenumrene mens du skriver ut teksten fra filene. Det er en veldig enkel metode å korrelere to filer eller innholdet deres.

$ ./manus.sh | ./input.sh

Eksempel 05:

La oss avslutte dette emnet ved å ha dette enkle og effektive eksemplet. Vi har et fil "skript.sh ”med innholdet nedenfor eller navn på personer. Vi skal lese disse navnene en etter en fra en annen fil.

Oppdater filen “Input.SH: Med skriptet nedenfor. I dette skriptet har vi en stundsløyfe for å utdype "stdin" som fungerer. Vi har brukt lest “Read -r” mens vi leste fra en annen fil som annet enn standardinngang. På den annen side, ved å bruke "-u" som bash-spesifikk, standardutgangen fra brukeren i terminalen. Her er "navnet" teksten eller innholdet i filen "skript.sh ”. Alternativet "-p" brukes til å "lese". Leserklæringen vil lese "navnet" fra en annen fil og spør om du vil slette den eller ikke. Nøkkelordet “IP” brukes til brukerrespons for å bekrefte slettingens handling. Uansett hva brukerens svar er, vil den skrive det ut. I "hvis" -uttalelsen vil den sjekke om standardinngangen fra brukeren er den samme som "y", så vil den skrive ut noen melding som å nevne at den har slettet "navnet". Denne prosessen vil bli gjentatt til det siste innholdet i filen “Skript.sh ”.

La oss se på utdataene fra ovennevnte kode. Utfør filen ved hjelp av bash -kommandoen. Systemet vil spørre deg om du vil slette dette "navnet" eller ikke. Skriv inn “Y” og trykk på “Enter”.

$ bash input.sh

Her når du trykker på "y", vil den skrive ut "y" og vise en melding om at den har slettet det spesielle "navnet". Etter det vil den bytte til et annet "navn".

Den vil be deg om å slette navnene til alle navn eller innhold i filen “Skript.SH ”har blitt overgått som nedenfor.

Konklusjon:

Vi har praktfullt gått gjennom alle de enkle eksemplene på standardinngang mens vi bruker "mens" -løkken i bashskriptet.