Løs utgave Bash Unary Operator forventet

Løs utgave Bash Unary Operator forventet
Feil har et mangfoldig antall typer og årsaker når det gjelder bash -programmering. En av disse feilene er den "unary operatøren forventet" feil i bash -programmering. Når du evaluerer uttrykk i betingede erklæringer, kan du komme inn i den "unary operatøren forventet" -spørsmålet. Årsakene til denne feilen "Bash Unary Operator forventet" kan være mangfoldig. Vi begynner med å snakke om hva som skaper problemet. Etter det vil vi gå over et par alternativer for å løse dette problemet. La oss komme i gang med dagens artikkel ved å lage en ny bash -fil i Ubuntu 20.04 System. For dette må vi bruke "berørings" -instruksjonen i skallterminalen og navngi filen "Unary.sh ”. $ Touch Unary.sh
$ nano unary.sh

Eksempel

Vi starter vårt første eksempel for denne artikkelen ved å lage en ny bash -kode i “Unary.sh ”-fil. Vi vil bruke den betingede uttalelsen for illustrasjonen av denne feilen. Innenfor denne kodefilen har vi lagt til bashstøtten på første linje som “#!/bin/bash ”. Vi prøver leserklæringen for å ta innspill fra brukeren med alternativet “-p” og legge den inndata i variabelen “V.”If-Else-uttalelsen er her for å se etter tilstanden. Det sjekker om verdien som er lagt inn av en bruker i variabel “V”, er lik nummeret 14 eller ikke. For å sjekke likestilling har vi brukt sammenligningsoperatøren “-EQ”. Hvis verdien som en bruker blir matchet med nummer 14, vil "da" -delen vise "verdien matchet" ved hjelp av en "ekko" -klausul. Ellers kommer den andre delen til å utføre sin "ekko" -uttalelse som viser "Verdien som ikke er matchet" -meldingen ved skallet. Koden er fullført her, og vi kan utføre den nå.

Etter å ha lagret bashoden, utførte vi den med bash -instruksjonen. Viser seg at det ber om innspillet fra brukeren. En bruker har lagt til verdien “67” i feltet og trykket Enter. Siden verdien ikke stemmer overens med den spesifiserte verdien i "IF" -tilstanden, ble "ellers" -delen utført og vist "Verdi ikke matchet", som presentert i utgangen vist nedenfor.

$ bash unary.sh

Dette handlet om bruk av en viss numerisk verdi for å utføre sammenligningen. La oss utføre koden vår igjen for å få den til å skje den "unary operatøren forventet" feil på skallet vårt. Så vi har prøvd koden igjen, og på inngangsfeltet som ber om en verdi å gå inn, har vi angitt ingenting (latt den være tom) og trykket på "Enter" -knappen for å fortsette. Plutselig gir det oss den "unary operatøren forventet" feil i linje 3 i koden. Etter det viste den ganske enkelt meldingen “Verdi ikke matchet” ved å bruke den andre delen av tilstanden som er nevnt i koden.

$ bash unary.sh

Selv om vi har møtt feilen "Unary Operator forventet" på utgangsområdet i terminalen, kan vi ikke gjenkjenne hovedårsaken til denne feilen. For å finne den viktigste grunnen til dette problemet, må vi feilsøke ut basekoden. For det må vi bruke alternativet “-xv” i bash-instruksjonen etterfulgt av filnavnet som starter med. "/" som vist. Den vil feilsøke hver linje i koden vår og også vise feillinjen. Det viser at feillinjen er “[-EQ 14]”. Det viser ikke “$ v” som vi har spesifisert i koden. Årsaken til denne feilen er at bruken av plass vil gjøre venstre sideuttrykk, jeg.e., “$ V,” forsvinner fra tilstanden.

$ bash -xv ./Unary.sh

For å forhindre at dette skriptet kaster den "unary operatøren forventet" -feilen på bash, må vi oppdatere koden igjen. Vi må legge til de doble sitatene rundt venstre uttrykk "$ v", som vi har gjort på bildet nedenfor. Resten av koden vil være uendret for nå. Nå er koden klar til bruk. Vi må lagre det først med “Ctrl+S” og avslutte filen med “Ctrl+x.”

Etter utførelsen av den oppdaterte bash -filen med bash -spørringen, har brukeren igjen trykket på Enter uten å legge inn noen verdi i inngangsfeltet foran "Enter noe" -teksten. Nå er forventet feil av operatøren blitt fjernet, men en annen feil, ”Heltalluttrykk forventet,” har oppstått. Men den viser også visningsmeldingen at verdien som er angitt av en bruker ikke samsvarer med nummeret 14. Så vi må finne ut løsningen for denne feilen.

$ bash unary.sh

Som vi vet at vi har brukt sammenligningsoperatøren “-EQ” for å sammenligne noen verdier med Heltallet 14. Det vil kaste et unntak fordi sammenligningsoperatøren “-EQ” bare er designet og brukt til sammenligning av strengverdier eller variabler. For å sammenligne antall heltall i bash, må vi bruke "=" -oppgaveoperatøren for å sjekke om de to verdiene er like eller ikke. La oss lagre denne oppdaterte koden for å se resultatet.

Etter denne oppdaterte utførelsen. Denne gangen har vi ikke noen feil. Dette er på grunn av bruken av "=" -operatøren. Til gjengjeld utførte den "ellers" -klausulen og viste en "verdi som ikke er matchet" -meldingen ".

$ bash unary.sh

En annen måte å unngå å møte den unary operatøren forventede feilen på vårt terminalskall er å bruke de doble "firkantede" parentesene i starten og slutten av "IF" -tilstanden mens du bruker "-eq" -sammenligningsoperatøren for alle typer verdi. Så vi gjorde det som vist nedenfor.

Etter å ha trykket på "Enter", får brukeren ingen feil mens han utfører.

$ bash unary.sh

Konklusjon

Dette handler om bruk av forskjellige metoder for å løse bashvilen “Unary Operator forventet.”Mens vi gjør det, har vi møtt en annen feil,“ Heltalluttrykk forventet ”, og vi har løst det også. Du kan endre eksemplet ovenfor og løse basefeilen.