A partire da bash: -lt e -gt argomenti


24

Sto iniziando con bash e ho trovato quanto segue:

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

Per leggere la sceneggiatura ed eseguirla, so cosa fa, ma non a cosa servono -lt e -gt.

Qualcuno può dirmi come si chiama quel tipo di "strumento" e cosa fanno (-lt e -gt)? Grazie!


9
Ci dispiace, ma mi sento di sottolineare che le echodichiarazioni nel codice rispondono alla tua domanda.
Devnull

Ci sono citazioni mancanti attorno alle variabili
Stéphane Chazelas,

Risposte:


29

È l'abbreviazione di less thane greater than. È usato per il confronto di numeri interi in bash. Puoi leggere di più digitando man test:

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

7

È possibile trovare la definizione di -lte -gtnella documentazione del testcomando ( man test) o nella documentazione di bash poiché testè un comando incorporato in bash (come nella maggior parte delle altre shell).

-lte -gtsono confronti numerici (minore di [e non uguale], maggiore di [e non uguale]). Ci sono anche operatori minori / maggiori o uguali -lee -ge, e operatori uguali e non uguali -eqe -ne. Si tratta di operatori numerici, quindi si verificherà un errore se una delle parti non è un numero ed 9è considerata inferiore a 10.

Il motivo per cui -ltvengono usati nomi simili al solito <è che il personaggio <sarebbe interpretato come un reindirizzamento. Gli operatori =ed !=esistono anche, ma eseguono un confronto tra stringhe: test 00 -eq 0è vero, mentre test 00 = 0è falso.

Alcune shell, tra cui bash, hanno anche operatori <e >che eseguono un confronto lessicografico di stringhe, quindi test 9 \< 10è falso perché 9è ordinato in precedenza 1(la barra rovesciata impedisce al personaggio <di essere interpretato come operatore di reindirizzamento). Queste shell offrono anche la sintassi a doppia parentesi per i test, ad esempio [[ 9 < 10 ]](al contrario di [ 9 \< 10 ]), che non può contenere reindirizzamenti al suo interno, quindi <non è necessario che sia citata.


4

Sono solo operatori.

Semplicemente: gte ltsignifica> (maggiore di) e <(minore di).

Puoi cercare qui ulteriori informazioni sugli operatori:


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.