Hva er forskjellen mellom printf og ekko i bash?

Hva er forskjellen mellom printf og ekko i bash?
Det kan være lurt å organisere resultatet av en Ubuntu -operasjon på en bestemt måte. Kanskje vi bør unngå oppblåste resultater og presentere informasjon i en kortfattet stil. Kommandoene Echo og Printf er også konstruert. Printf sørger for oppretting av en formateringsstreng og tilbyr en ikke-null sluttstatus når den mislykkes. Mens ekko normalt forlater en 0 -status og sender typisk innganger som er ledet ved slutten av linjekarakteren på dette standardresultatet. "Printf" gir deg flere alternativer for utgangsformatet enn "Echo". Gjennom denne korte leksjonen vil vi se på hvordan du kan style resultatene av terminalen ved å bruke Echo- og Printf -instruksjonene på Ubuntu 20.04 Linux -system.

Eksempel 01:

For å understreke og se arbeid med PRINTF- og ECHO -uttalelser, la oss ha våre første enkle og enkle å gjøre et eksempel. Du må åpne konsollskallprogrammet for å gjøre det. For det, bruk “Ctrl+Alt+T” på skrivebordsskjermen på Ubuntu 20.04 Linux operativsystem. Konsollapplikasjonen vil bli åpnet om noen få øyeblikk, og for det trenger du ikke vente mye. Etter at terminalen er åpnet, vil vi utføre både "printf" og "ekko" -uttalelser separat for å se hvordan de fungerer ordentlig. Så vi har prøvd “Printf” på skallet først for å skrive ut antall tegn i en streng “Linux” på skallet vårt.

Kommandoen har blitt brukt med "-m" -flagget sammen med "WC" -nøkkelordet. Kommandoen er oppført på bildet nedenfor. Etter å ha utført denne kommandoen ved å trykke på "Enter" -tasten, fikk vi 5 som et resultat. Dette betyr at "printf" inneholder bare 5 bokstaver i den. Ettersom Printf er en standarduttalelse, er det derfor den vil vise argumentene i en standard formatert form mens du er i kontroll.

$ printf 'linux' | wc -m

La oss se på "ekko" -uttalelsen nå. Så den samlede syntaks for kommandoen vil være den samme, men "ekko" -uttalelsen vil bli brukt i stedet for "printf" her. Strengen gitt i kommandoen er også den samme. Når vi kjører kommandoen på konsollen, viser den det 6 nummeret som et resultat. Hvorfor skjer det når en streng bare inneholder 5 tegn? Dette er fordi "ekko" -uttalelsen også teller "Newline" som sin karakter i henhold til basho "Echo" Standard Manpage Manual ". Hvis vi legger til litt plass før eller etter strengen, vil det også ta det som karakter.

$ ekko 'Linux' | wc -m

Eksempel 02: Bruke printf

La oss se arbeidet med "printf" -uttalelsen først i vårt nye eksempel. Lag en ny bash -fil “Test.SH ”med utnyttelsen av en Nano Touch -kommando etterfulgt av“ Nano ”-kommandoen i skallet. Nano -kommandoen vil bli brukt til å åpne filen i en "Nano" -redaktør. Etter at filen er åpnet, har vi lagt til bash -utvidelsen først på den første linjen i en fil. Variabelen “STR” er initialisert med en lang strengverdi i den. Vi har erklært en innebygd variabel "IFS" for å bruke plass som avgrensningsverdi.

Deretter har vi brukt “Read” -kommandoen i neste linje for å lese verdiene til en strengvariabel som en matrise og lagre den i variabelen “ARR”. “-RA” -flagget har blitt brukt her for dette formålet spesielt. Etter dette brukes ekko -setningen her for å gi oss beskjed om størrelsen på en matrisevariabel “ARR”. "For" -sløyfen er initialisert for å iterere hvert ord fra en strengvariabel og vise den på skallet ved hjelp av "printf" -uttalelsen. Som vi vet at Printf ikke tar neste linje som neste karakter automatisk, så har vi brukt "\ n" -tegnet i Printf -setningen for å gjøre det. Loopen ender her, og koden vil bli lagret ved hjelp av en "Ctrl+S" -nøkkelnøkkel.

For å se resultatene fra Printf -setningen, utfør filen med "bash" -kommandoen for å få den til å fungere. Utgangen viser størrelsen på en matrise, i.e., 9. Etter det har hvert ord i en streng blitt iterert ved hjelp av "for" -løkken og vist på terminalen separat på hver neste linje. Dette har blitt gjort ved å bruke “\ n” i "printf" -klausulen. Ellers har det kanskje ikke skjedd.

$ bash test.sh

Eksempel 03: Bruke ekko

Innenfor dette nye eksemplet vil vi illustrere arbeidet med "ekko" -uttalelsen i bash -skriptet. Så vi har åpnet den samme “testen.SH ”finn ved hjelp av en“ Nano ”-kommando i Shell -konsollen. Filen åpnes i Nano Editor. All koden forble uendret, jeg.e., Bash Support, “Str” String, IFS Variable, Read Statements and “For” Loops. Den eneste endringen du må gjøre er: erstatt "printf" -ordet med "ekko" nøkkelord i bash -skriptet.

Du kan se at vi også har lagt til "\ n" i "ekko" -uttalelsen for å komme på den nye linjen. Som vi alle vet at "ekko" -uttalelsen alltid anser Newline som en ekstra karakter; Derfor vil den ikke formatere utdataene som sådan.

La oss kjøre koden for å se resultatene. I stedet for å lage et gap på en ny linje, anser Echo -uttalelsen "\ n" som en ekstra karakter. Derfor ser utgangen ut som noe nedenfor.

$ bash test.sh

La oss oppdatere koden for å få de nødvendige resultatene. Så etter å ha åpnet filen, har vi fjernet "\ n" -tegnet fra Echo Statement String. Lagret koden og avsluttet filen.

Etter å ha kjørt den oppdaterte koden denne gangen, har vi igjen størrelsen på en strenggruppe som "9". Etter det har alle ordene til en matrise blitt vist separat, hver på neste linje.

$ bash test.sh

Konklusjon:

Denne guiden inneholder mer enn ett eksempel for å illustrere funksjonaliteten og forskjellen i "printf" og "ekko" -uttalelsene. Foretrekker å bruke "printf" -uttalelsen innen bash fordi den er mer standardisert når "ekko" oppfører seg poler fra hverandre på andre plattformer.