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
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:
echo
udsagn i koden besvarer dit spørgsmål.