Gå til innhold

[Løst] Feilmelding: arithmetic syntax error i let


toreae

Anbefalte innlegg

Skrevet (endret)

Prøver å rette en linje i en plugin på dreamboxen min, FlashBackup. I build-nfi-image_en.sh er følgende linje:

 

let $MEMFREE=`free | grep Total | tr -s " " | cut -d " " -f 4 `/1024

 

som gir feilmeldingen: arithmetic syntax error. Hva er feil her? Neste linjer er forøvrig:

 

 

if [ "$MEMFREE" -lt $SWAPSIZE ]; then
echo "Memory is smaller than "$SWAPSIZE"MB, FlashBackup has to create a swapfile"

Skjønner heller ikke hvorfor tilbakemeldingen er feil i linje 340, da dette er linje 241.

Endret av toreae
Videoannonse
Annonse
Skrevet

Det er kommandoen din som er satt opp feil:

 

$ free | grep total

total used free shared buffers cached

$

 

Du skal vel ha linje #2, den finner du med følgende kommando: free | grep "^Mem"

 

Du kan klippe ut første nummeret med denne kommandoen: free | grep "^Mem" | cut -c5-18 | sed -e "s/ //g"

 

Testet ut på CentoS 6 og bash

Skrevet (endret)

Eller bare bruk kraftfulle awk. By default splitter den på whitespace (spaces, tabs, ...) og $1 gir derfor "Mem" og $2 total memory når du søker etter linjen med "Mem", // indikerer regex.

$ free | awk '/Mem/ {print $2}'
8189032
Endret av Occi
Skrevet

Faren er stor for at dere snakker over hodet mitt. Det jeg tror jeg skal ha er minne i total, men i MB. Og det skal over i $MEMFREE. Jeg oppfatter det slik at det er først og fremst:

let $MEMFREE=

Skrevet

Fra man free:

 

-m, --mega

Display the amount of memory in megabytes.

 

Som da gir:

 

 

$ MEMFREE=`free -m | awk '/Mem/ {print $2}'`
$ echo $MEMFREE
7997
Skrevet

Takker @Occi. Fant selv ut at "let $" måtte bort. Resultatet ble:

 

 

MEMFREE=`free -m | awk '/Mem/ {print $2}'`
if [ "$MEMFREE" -lt $SWAPSIZE ]; then
echo "Memory is smaller than "$SWAPSIZE"MB, FlashBackup has to create a swapfile"

Men skjønner fortsatt ikke hvorfor det ble klagd på linje 340, når feilen var i linje 241!

Skrevet (endret)

Uten hele scriptet eller feilmeldingen er det vanskelig å gjette flyten og grunnen til hvorfor feilmeldingen kommer fra en annen linje. Uansett, fint at det fikset seg og da setter jeg tråden som løst :)

Endret av Occi

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...