Få feil i bash -skriptet; Expr $ a + 1 heltall uttrykk forventet

Få feil i bash -skriptet; Expr $ a + 1 heltall uttrykk forventet

Bash er en populær kommandolinjetolk som ofte brukes i Linux og UNIX-baserte systemer, da den lar brukere utføre kommandoer og skript i terminalen. En av de vanligste feilene som brukerne møter når de jobber med bash er “Expr: Heltalluttrykk forventet” feil. Denne artikkelen vil se nærmere på denne feilen, hvorfor den oppstår og hvordan du kan rette den, så hvis du står overfor den samme feilen, kan du lese denne guiden.

Hva er feilen "Expr: Heltall Expression Expression"

De “Expr: Heltalluttrykk forventet”Feil er en feilmelding som genereres av Bash Shell når en bruker prøver å utføre et matematisk uttrykk som inneholder ikke-numeriske tegn. Feilen er vanligvis ledsaget av et linjenummer som indikerer hvor feilen oppstod i skriptet.

Hvorfor oppstår feilen “Expr: Heltall Expression Expression”

expr: heltall uttrykk forventet ” Feil oppstår når brukeren prøver å utføre en matematisk operasjon ved bruk av ikke-numeriske verdier. For eksempel, hvis en bruker prøver å legge til en streng til et tall, vil bashskallet generere “Expr: Heltalluttrykk forventet” feil. La oss se på et eksempel på feil kode som gir denne feilen:

#!/bin/bash
a = 0
B = 3
mens ["$ a" -lt $ b]
gjøre
ekko $ a
a = "expr $ a + 1"
Ferdig

Her bruker koden ovenfor mens Loop fortsetter å fortsette tilleggsprosessen som sammenligner den første variabelen, det vil si en hvis verdi er 0, med den andre variabelen b hvis gitte verdi er 3. Løkken vil fortsette å utføre til tilstanden blir falsk, det vil si at A er mindre enn B, tilsetningen utføres ved å bruke Expr -kommandoen. Feilmeldingen “Expr $ 0 + 1: Heltalluttrykk forventet” indikerer at det er et problem med måten manuset prøver å øke verdien av "a". Feilen er forårsaket av bruk Doble sitater I stedet for backticks eller dollartegnet med parenteser for å utføre “Expr” -kommandoen:

For å fikse feilen, skal skriptet bruke backticks (') For å utføre “expr” -kommandoen og evaluere det aritmetiske uttrykket, så her er riktig kode som bruker backticks:

#!/bin/bash
a = 0
B = 3
mens ["$ a" -lt $ b]
gjøre
ekko $ a
a = 'expr $ a + 1'
Ferdig

Her har jeg nettopp erstattet de doble sitatene med backticks, og nå tar Expr -kommandoen en Som et heltall og utfører tillegg dette tilstanden i mens Loop blir falsk:

Konklusjon

De “Expr: Heltalluttrykk forventet” Feil er en vanlig feil som oppstår i bash når brukere prøver å utføre matematiske operasjoner på ikke-numeriske verdier. For å rette opp denne feilen, er det viktig å sørge for at alle verdier i våre matematiske uttrykk er numeriske. Ved å gjøre det kan vi unngå denne feilen og sikre at skriptene våre blir utført som ment.