Dimulai dengan argumen bash: -lt dan -gt


24

Saya mulai dengan bash dan saya menemukan yang berikut:

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

Untuk membaca skrip dan menjalankannya, saya tahu apa fungsinya, tetapi bukan untuk apa -lt dan -gt.

Dapatkah seseorang memberi tahu saya apa nama 'alat' semacam itu dan apa yang mereka (-lt dan -gt) lakukan? Terima kasih!


9
Maaf, tapi saya merasa perlu menunjukkan bahwa echopernyataan dalam kode menjawab pertanyaan Anda.
devnull

Ada tanda kutip yang hilang di sekitar variabel
Stéphane Chazelas

Jawaban:


29

Ini kependekan dari less thandan greater than. Ini digunakan untuk perbandingan integer di bash. Anda dapat membaca lebih lanjut dengan mengetik man test:

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

7

Anda dapat menemukan definisi -ltdan -gtdalam dokumentasi testperintah ( man test), atau dalam dokumentasi bash karena testmerupakan perintah bawaan di bash (seperti di sebagian besar shell lainnya).

-ltdan -gtmerupakan perbandingan numerik (kurang dari [dan tidak sama], lebih besar dari [dan tidak sama]). Ada juga operator yang kurang / lebih besar atau sama -ledan -ge, dan operator yang sama dan tidak sama -eqdan -ne. Ini adalah operator numerik, sehingga akan ada kesalahan jika kedua belah pihak bukan angka, dan 9dianggap kurang dari 10.

Alasan mengapa nama seperti -ltdigunakan daripada biasanya <adalah karena karakter <tersebut akan ditafsirkan sebagai pengalihan. Operator =dan !=juga ada, tetapi mereka melakukan perbandingan string: test 00 -eq 0benar sedangkan test 00 = 0salah.

Beberapa shell, termasuk bash, juga memiliki operator <dan >yang melakukan perbandingan leksikografis string, jadi test 9 \< 10salah karena 9diurutkan sebelumnya 1(backslash mencegah karakter <ditafsirkan sebagai operator redirection). Kerang ini juga menawarkan sintaks braket ganda untuk pengujian, misalnya [[ 9 < 10 ]](yang bertentangan dengan [ 9 \< 10 ]), yang tidak dapat memiliki pengalihan di dalam sehingga <tidak perlu dikutip.


4

Mereka hanya operator.

Cukup: gtdan ltrata - rata> (lebih besar dari) dan <(kurang dari).

Anda dapat melihat di sini untuk informasi lebih lanjut tentang operator:


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.