Fel [: -lt: unary operatör förväntas i shell-skript Linux [stängd]

<åt sidan class = "s-notice s-notice__info js-post-notice mb16 "role =" status ">

Stängd. Denna fråga är utanför ämnet . För närvarande accepteras inte svar.

Kommentarer

  • Får du också fel från expr?
  • inget fel visas på expr
  • Använd fler citat ™
  • Berätta för oss ALLA felmeddelanden nästa gång. Inte bara den sista i en uppsättning. Du skulle också ha fått expr: syntax error.

Svar

Försök ändra alla +1 s efter expr s till + 1.

Utan mellanslag expr returnerar ett fel och $temp kommer att vara tomt. Om $temp är tom kommer -lt att jämföra ett tomt utrymme med ett tal, varför felet visas. Här ”är en liner som återger problemet:

t=0;t=`expr $t +1`;[ $t -lt 25 ] 

Output (to STDERR):

expr: syntax error bash: [: -lt: unary operator expected 

Ännu bättre, ändra all kod som använder det externa verktyget expr för att använda skalets egen interna aritmetiska expansion. Så kod så här:

temp=`expr $temp +1` 

… bör ändras till:

temp=$(($temp + 1)) 

Eller, i bash , hela raden kan ersättas med bara:

((temp++)) 

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *