Perintah tes dapat digunakan pada baris perintah Linux untuk membandingkan satu elemen dengan yang lain tetapi lebih sering digunakan dalam skrip shell BASH sebagai bagian dari pernyataan kondisional yang mengontrol logika dan aliran program.
Contoh Dasar
Anda dapat mencoba perintah ini hanya dengan membuka jendela terminal .
uji 1 -eq 2 && echo "ya" || gema "tidak"
Perintah di atas dapat diuraikan sebagai berikut:
- tes - ini berarti Anda akan melakukan perbandingan
- 1 - elemen pertama yang akan Anda bandingkan
- -eq (bagaimana Anda membandingkan, dalam hal ini, Anda menguji apakah satu nomor sama dengan yang lain)
- 2 - elemen Anda membandingkan elemen pertama lagi
- && - jalankan pernyataan berikut jika hasilnya benar
- echo "yes" - perintah untuk dijalankan jika perbandingan mengembalikan nilai true
- || - jalankan pernyataan berikut jika hasilnya salah
- echo "no" - perintah untuk dijalankan jika perbandingan mengembalikan false
Intinya, perintahnya adalah membandingkan 1 hingga 2 dan mereka cocok dengan pernyataan echo "ya" yang dieksekusi yang menampilkan "ya" dan jika mereka tidak cocok dengan pernyataan echo "tidak" dijalankan yang menampilkan "tidak".
Membandingkan Angka
Jika Anda membandingkan elemen yang menguraikan sebagai angka, Anda dapat menggunakan operator perbandingan berikut:
- -eq - apakah nilai 1 bernilai sama 2
- -ge - adalah nilai 1 lebih besar atau sama dengan nilai 2
- -gt - adalah nilai 1 lebih besar dari nilai 2
- -le - adalah nilai 1 kurang dari atau sama dengan nilai 2
- -lt - adalah nilai 1 kurang dari nilai 2
- -ne - apakah nilai 1 tidak sama dengan nilai 2
Contoh:
uji 1 -eq 2 && echo "ya" || gema "tidak"
(menampilkan "tidak" ke layar karena 1 tidak sama dengan 2)
uji 1 -ge 2 && echo "ya" || gema "tidak"
(menampilkan "tidak" ke layar karena 1 tidak lebih besar atau sama dengan 2)
uji 1-gt 2 && echo "ya" || gema "tidak"
(menampilkan "tidak" ke layar karena 1 tidak lebih besar dari 2)
uji 1 -le 2 && echo "ya" || gema "tidak"
(menampilkan "ya" ke layar karena 1 kurang dari atau sama dengan 2)
uji 1 -lt 2 && echo "ya" || gema "tidak"
(menampilkan "ya" ke layar karena 1 kurang dari atau sama dengan 2)
uji 1 -ne 2 && echo "ya" || gema "tidak"
(menampilkan "ya" ke layar karena 1 tidak sama dengan 2)
Membandingkan Teks
Jika Anda membandingkan elemen yang mengurai string, Anda dapat menggunakan operator perbandingan berikut:
- = - melakukan string 1 string pertandingan 2
- ! = - adalah string 1 berbeda dengan string 2
- -n - adalah panjang string lebih besar dari 0
- -z - adalah panjang string 0
Contoh:
uji "string1" = "string2" && echo "ya" || gema "tidak"
(menampilkan "tidak" ke layar karena "string1" tidak sama dengan "string2")
uji "string1"! = "string2" && echo "ya" || gema "tidak"
(menampilkan "ya" ke layar karena "string1" tidak sama dengan "string2")
uji-n "string1" && echo "ya" || gema "tidak"
(menampilkan "ya" ke layar karena "string1" memiliki panjang string lebih besar dari nol)
uji -z "string1" && echo "ya" || gema "tidak"
(menampilkan "tidak" ke layar karena "string1" memiliki panjang string lebih besar dari nol)
Membandingkan File
Jika Anda membandingkan file, Anda dapat menggunakan operator perbandingan berikut:
- -ef - Apakah file memiliki nomor perangkat dan inode yang sama (apakah itu file yang sama)
- -nt - Apakah file pertama lebih baru daripada file kedua
- -ot - Apakah file pertama lebih tua dari file kedua
- -b - File ada dan merupakan blok khusus
- -c - File ada dan bersifat khusus
- -d - File ada dan merupakan direktori
- -e - File itu ada
- -f - File ada dan merupakan file biasa
- -g - File ada dan memiliki nomor grup yang ditentukan
- -G - File ada dan pemilik oleh grup pengguna
- -h - File ada dan merupakan tautan simbolis
- -k - File ada dan memiliki bit set yang lengket
- -L - Sama dengan -h
- -O - File itu ada Anda adalah pemiliknya
- -p - File ada dan merupakan pipa bernama
- -r - File ada dan dapat dibaca
- -s - File ada dan memiliki ukuran lebih besar dari nol
- -S - File ada dan merupakan soket
- -t - File descriptor dibuka di terminal
- -u - File ada dan set-user-id bit diatur
- -w - File ada dan dapat ditulis
- -x - File ada dan dapat dieksekusi
Contoh:
test / path / to / file1 -n / path / ke / file2 && echo "yes"
(Jika file1 lebih baru dari file2 maka kata "ya" akan ditampilkan)
uji -e / path / ke / file1 && echo "ya"
(jika file1 ada kata "ya" akan ditampilkan)
uji -O / path / ke / file1 && echo "ya"
(jika Anda memiliki file1 maka kata "ya" ditampilkan ")
Terminologi
- Block special - File adalah perangkat blok yang berarti data dibaca dalam blok byte. Ini umumnya file perangkat seperti hard drive.
- Khusus karakter - File akan segera bertindak saat Anda menulis dan umumnya berupa perangkat seperti port serial
Membandingkan Beberapa Kondisi
Sejauh ini semuanya telah membandingkan satu hal dengan yang lain tetapi bagaimana jika Anda ingin membandingkan dua kondisi.
Sebagai contoh, jika seekor binatang memiliki 4 kaki dan pergi "moo" itu mungkin seekor sapi. Cukup memeriksa 4 kaki tidak menjamin bahwa Anda memiliki sapi tetapi memeriksa suara itu pasti membuatnya.
Untuk menguji kedua kondisi sekaligus gunakan pernyataan berikut:
uji 4 -eq 4 -a "moo" = "moo" && echo "itu sapi" || echo "itu bukan sapi"
Bagian kunci di sini adalah -a yang merupakan singkatan dan.
Ada cara yang lebih baik dan lebih umum digunakan untuk melakukan tes yang sama dan itu adalah sebagai berikut:
test 4 -eq 4 && test "moo" = "moo" && echo "itu sapi" || echo "itu bukan sapi"
Tes lain yang mungkin ingin Anda lakukan adalah membandingkan dua pernyataan dan jika salah satu output benar adalah string. Misalnya, jika Anda ingin memeriksa bahwa file bernama "file1.txt" ada atau file bernama "file1.doc" ada Anda dapat menggunakan perintah berikut
test -e file1.txt -o -e file1.doc && echo "file1 exist" || echo "file1 tidak ada"
Bagian kunci di sini adalah -o yang mewakili atau.
Ada cara yang lebih baik dan lebih umum digunakan untuk melakukan tes yang sama dan itu adalah sebagai berikut:
uji -e file1.txt || test -e file1.doc && echo "file1 exist" || echo "file1 tidak ada"
Menghilangkan Kata Kunci Uji
Anda sebenarnya tidak perlu menggunakan tes kata untuk melakukan perbandingan. Yang harus Anda lakukan adalah melampirkan pernyataan dalam tanda kurung siku sebagai berikut:
[-e file1.txt] && echo "file1 ada" || echo "file1 tidak ada"
[Dan] pada dasarnya berarti sama dengan tes.
Sekarang Anda tahu ini Anda dapat meningkatkan membandingkan beberapa kondisi sebagai berikut:
[4 -eq 4] && ["moo" = "moo"] && echo "itu sapi" || echo "itu bukan sapi"
[-e file1.txt] || [-e file1.doc] && echo "file1 ada" || echo "file1 tidak ada"
Ringkasan
Perintah tes lebih berguna dalam skrip karena Anda dapat menguji nilai satu variabel terhadap yang lain dan mengontrol aliran program. Pada baris perintah standar, Anda dapat menggunakannya untuk menguji apakah file ada atau