Jeg begynner med bash og jeg fant 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 å lese skriptet og utføre det, vet jeg hva det gjør, men ikke hva -lt og -gt er til.
Kan noen fortelle meg hva som heter den slags «verktøy» og hva de (-lt og -gt) gjør? Takk!
Kommentarer
Svar
Det er forkortelse for less than
og greater than
. Det brukes til sammenligning av heltall i bash. Du kan lese mer ved å skrive man test
:
.... INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2 .... INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2 ....
Svar
Du finner definisjonen av -lt
og -gt
i dokumentasjonen til test
kommandoen (man test
), eller i dokumentasjonen til bash siden test
er en innebygd kommando i bash (som i de fleste andre skjell).
-lt
og -gt
er numeriske sammenligninger (mindre enn [og ikke like], større enn [og ikke like]). Det er også mindre / større eller like operatører -le
og -ge
, og like og ikke like operatører -eq
og -ne
. Dette er numeriske operatorer, så det vil være en feil hvis begge sider ikke er» ta-nummer, og 9
ered mindre enn 10
.
Årsaken til at navn som -lt
brukes i stedet for den vanlige <
er at tegnet <
vil bli tolket som en omdirigering. Operatørene =
og !=
eksisterer også, men de utfører en strengesammenligning: test 00 -eq 0
er true mens test 00 = 0
er usant.
Noen skall, inkludert bash, har også operatorer <
og >
som utfører en streng leksikografisk sammenligning, så test 9 \< 10
er falsk fordi 9
er sortert før 1
(omvendt skråstrek forhindrer at tegnet <
tolkes som en viderekoblingsoperator). Disse skjellene tilbyr også syntaksen med dobbel brakett for tester, f.eks. [[ 9 < 10 ]]
(i motsetning til [ 9 \< 10 ]
), som ikke kan ha omdirigeringer inne slik at <
trenger ikke å siteres.
Svar
De er bare operatører.
Enkelt: gt
og lt
betyr> (større enn) og < (mindre enn).
Du kan se her for mer informasjon om operatører:
Svar
Dette er sammenligningsoperatorer
-lt = mindre enn
-gt = større enn
Du kan sjekke denne siden for ytterligere detaljer:
echo
utsagnene i koden svarer på spørsmålet ditt.