Startende med bash: -lt og -gt argumenter

Jeg begynder med bash, og jeg fandt følgende:

if test $first -lt $second then echo $first is lower than $second else if test $first -gt $second then echo $first is higher than $second else echo $first and $second are equals fi fi 

For at læse scriptet og udføre det ved jeg hvad det gør, men ikke hvad -lt og -gt er beregnet til.

Kan nogen fortælle mig, hvad navnet er på den slags “værktøj” og hvad de (-lt og -gt) gør? Tak!

Kommentarer

  • Beklager, men jeg er værd at pege på ud af, at echo udsagn i koden besvarer dit spørgsmål.
  • Der mangler citater omkring variablerne

Svar

Det er en forkortelse for less than og greater than. Det bruges til sammenligning af heltal i bash. Du kan læse mere ved at skrive man test:

 .... INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2 .... INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2 .... 

Svar

Du kan finde definitionen af -lt og -gt i dokumentationen til test kommandoen (man test), eller i dokumentationen af bash, da test er en indbygget kommando i bash (som i de fleste andre skaller).

-lt og -gt er numeriske sammenligninger (mindre end [og ikke ens], større end [og ikke lige]). Der er også mindre / større eller lige store operatorer -le og -ge, og lige og ikke-lige operatorer -eq og -ne. Disse er numeriske operatorer, så der vil være en fejl, hvis begge sider ikke er” ta nummer, og 9 betragtes ered mindre end 10.

Årsagen til, at navne som -lt bruges i stedet for den sædvanlige < er, at tegnet < ville blive fortolket som en omdirigering. Operatørerne = og != findes også, men de udfører en strengesammenligning: test 00 -eq 0 er sand, mens test 00 = 0 er falsk.

Nogle skaller, inklusive bash, har også operatorer < og > som udfører en streng leksikografisk sammenligning, så test 9 \< 10 er falsk, fordi 9 sorteres før 1 (backslash forhindrer tegnet < i at blive fortolket som en omdirigeringsoperator). Disse skaller tilbyder også syntaks med dobbeltbeslag til test, f.eks. [[ 9 < 10 ]] (i modsætning til [ 9 \< 10 ]), som ikke kan have omdirigeringer indeni, så < behøver ikke at blive citeret.

Svar

De er bare operatorer.

Simpelthen: gt og lt betyder> (større end) og < (mindre end).

Du kan se her for mere information om operatører:

Svar

Dette er sammenligningsoperatorer

-lt = mindre end

-gt = større end

Du kan kontrollere denne side for yderligere detaljer:

http://tldp.org/LDP/abs/html/comparison-ops.html

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *