Tutorial operator dasar shell Terbaik Pada tahun 2024, Dalam tutorial ini Anda dapat mempelajari operator aritmatika,Operator relasional,operator boolean,Operator logis,Operator String,Berkas Uji Operator,
Shell dan bahasa pemrograman lainnya, mendukung berbagai operator, termasuk:
pesta asli tidak mendukung operasi matematika sederhana, namun dapat dicapai melalui perintah lain, seperti awk dan expr, expr paling umum digunakan.
expr adalah alat perhitungan ekspresi, menggunakannya untuk menyelesaikan operasi ekspresi evaluator.
Misalnya, untuk menambahkan dua angka (perhatikan penggunaan `anti-tanda kutip bukan tanda kutip tunggal '):
#!/bin/bash val=`expr 2 + 2` echo "两数之和为 : $val"
Mengeksekusi script, output adalah sebagai berikut:
两数之和为 : 4
Dua hal yang perlu diperhatikan:
Tabel berikut berisi daftar operator aritmatika umum, dengan asumsi variabel 10, variabel b adalah 20:
operator | penjelasan | contoh |
---|---|---|
+ | tambahan | `Expr $ a + $ b` hasil adalah 30. |
- | pengurangan | `Expr $ a - $ b` hasil adalah -10. |
* | perkalian | `Expr $ a \ * hasil $ b` untuk 200. |
/ | divisi | `Hasil a` Expr $ b / $ adalah 2. |
% | sisa | `Expr $ b% hasilnya $ a` adalah 0. |
= | tugas | a = $ b variabel b akan menetapkan nilai dari. |
== | Sama. Digunakan untuk membandingkan dua nomor, pulang sama benar. | [$ A == $ b] mengembalikan false. |
! = | Tidak sama. Digunakan untuk membandingkan dua angka bukan hasil yang sama benar. | [$ A! = $ B] mengembalikan true. |
Catatan: Ekspresi kondisional harus ditempatkan di antara tanda kurung, dan termasuk spasi, misalnya:[$ a == $ b] adalah salah dan harus ditulis sebagai[$ a == $ b].
operator aritmatika contoh adalah sebagai berikut:
#!/bin/bash # author:本教程 # url:www.w3write.com a=10 b=20 val=`expr $a + $b` echo "a + b : $val" val=`expr $a - $b` echo "a - b : $val" val=`expr $a \* $b` echo "a * b : $val" val=`expr $b / $a` echo "b / a : $val" val=`expr $b % $a` echo "b % a : $val" if [ $a == $b ] then echo "a 等于 b" fi if [ $a != $b ] then echo "a 不等于 b" fi
Mengeksekusi script, output adalah sebagai berikut:
a + b : 30 a - b : -10 a * b : 200 b / a : 2 b % a : 0 a 不等于 b
Catatan:
- tanda perkalian (*) harus ditambahkan di depan sebuah backslash (\) dalam rangka mencapai perkalian;
- jika id. maka id. fi pernyataan bersyarat, tindak lanjut akan dibahas.
- Dalam shell MAC sintaks expr adalah: $ ((ekspresi)), di mana ekspresi "*" perlu untuk melarikan diri simbol "\."
operator relasional hanya mendukung digital, tidak mendukung string, kecuali nilai string adalah angka.
Tabel berikut berisi daftar operator relasional yang umum digunakan, dengan asumsi variabel 10, variabel b adalah 20:
operator | penjelasan | contoh |
---|---|---|
-eq | Mendeteksi apakah dua nomor yang sama, hasil yang sama benar. | [$ A -eq $ b] mengembalikan false. |
ne | Mendeteksi apakah dua nomor yang sama, tidak kembali sama benar. | [$ A ne $ b] mengembalikan true. |
-gt | kiri lebih besar dari jumlah yang terdeteksi di sebelah kanan, dan jika demikian, ia mengembalikan benar. | [$ A -gt $ b] mengembalikan false. |
-lt | Deteksi jumlah kurang dari kanan kiri, dan jika demikian, ia mengembalikan benar. | [$ A -lt $ b] mengembalikan true. |
-ge | Mendeteksi apakah jumlah ini sama dengan kanan kiri besar, dan jika demikian, ia mengembalikan benar. | [$ A -ge $ b] mengembalikan false. |
le | Apakah jumlah deteksi kurang dari atau sama dengan kanan ke kiri, jika, ia mengembalikan benar. | [$ A le $ b] mengembalikan true. |
operator relasional contoh adalah sebagai berikut:
#!/bin/bash # author:本教程 # url:www.w3write.com a=10 b=20 if [ $a -eq $b ] then echo "$a -eq $b : a 等于 b" else echo "$a -eq $b: a 不等于 b" fi if [ $a -ne $b ] then echo "$a -ne $b: a 不等于 b" else echo "$a -ne $b : a 等于 b" fi if [ $a -gt $b ] then echo "$a -gt $b: a 大于 b" else echo "$a -gt $b: a 不大于 b" fi if [ $a -lt $b ] then echo "$a -lt $b: a 小于 b" else echo "$a -lt $b: a 不小于 b" fi if [ $a -ge $b ] then echo "$a -ge $b: a 大于或等于 b" else echo "$a -ge $b: a 小于 b" fi if [ $a -le $b ] then echo "$a -le $b: a 小于或等于 b" else echo "$a -le $b: a 大于 b" fi
Mengeksekusi script, output adalah sebagai berikut:
10 -eq 20: a 不等于 b 10 -ne 20: a 不等于 b 10 -gt 20: a 不大于 b 10 -lt 20: a 小于 b 10 -ge 20: a 小于 b 10 -le 20: a 小于或等于 b
Tabel berikut mencantumkan operator Boolean biasa digunakan, dengan asumsi variabel 10, variabel b adalah 20:
operator | penjelasan | contoh |
---|---|---|
! | Non-operasi, ekspresi adalah pengembalian benar palsu, jika tidak maka kembali benar. | [! Salah] mengembalikan true. |
-o | OR operasi, ada ekspresi yang benar mengembalikan nilai true. | [$ A -lt 20 -o $ b -gt 100] mengembalikan true. |
-a | Dan operasi, dua ekspresi yang benar sebelum kembali benar. | [$ A -lt 20 -a $ b -gt 100] mengembalikan false. |
operator Boolean contoh adalah sebagai berikut:
#!/bin/bash # author:本教程 # url:www.w3write.com a=10 b=20 if [ $a != $b ] then echo "$a != $b : a 不等于 b" else echo "$a != $b: a 等于 b" fi if [ $a -lt 100 -a $b -gt 15 ] then echo "$a -lt 100 -a $b -gt 15 : 返回 true" else echo "$a -lt 100 -a $b -gt 15 : 返回 false" fi if [ $a -lt 100 -o $b -gt 100 ] then echo "$a -lt 100 -o $b -gt 100 : 返回 true" else echo "$a -lt 100 -o $b -gt 100 : 返回 false" fi if [ $a -lt 5 -o $b -gt 100 ] then echo "$a -lt 100 -o $b -gt 100 : 返回 true" else echo "$a -lt 100 -o $b -gt 100 : 返回 false" fi
Mengeksekusi script, output adalah sebagai berikut:
10 != 20 : a 不等于 b 10 -lt 100 -a 20 -gt 15 : 返回 true 10 -lt 100 -o 20 -gt 100 : 返回 true 10 -lt 100 -o 20 -gt 100 : 返回 false
Berikut ini menjelaskan operator Shell logis, dengan asumsi variabel 10, variabel b adalah 20:
operator | penjelasan | contoh |
---|---|---|
&& | logis DAN | [[$ A -lt 100 && $ b -gt 100]] kembali palsu |
|| | logis OR | [[$ A -lt 100 || $ b -gt 100]] Pengembalian benar |
Contoh operator logika adalah sebagai berikut:
#!/bin/bash # author:本教程 # url:www.w3write.com a=10 b=20 if [[ $a -lt 100 && $b -gt 100 ]] then echo "返回 true" else echo "返回 false" fi if [[ $a -lt 100 || $b -gt 100 ]] then echo "返回 true" else echo "返回 false" fi
Mengeksekusi script, output adalah sebagai berikut:
返回 false 返回 true
Berikut daftar tabel yang umum digunakan operator string, diasumsikan sebagai variabel "abc", variabel b adalah "efg":
operator | penjelasan | contoh |
---|---|---|
= | Mendeteksi dua string yang sama, hasil yang sama benar. | [$ A = $ b] mengembalikan false. |
! = | Mendeteksi apakah dua string adalah sama, tidak kembali sama benar. | [$ A! = $ B] mengembalikan true. |
-z | Mendeteksi apakah panjang string adalah 0 untuk 0 hasil yang benar. | [-z $ A] mengembalikan false. |
-n | Mendeteksi apakah panjang string adalah 0, non zero-return true. | [-n $ A] mengembalikan true. |
str | Mendeteksi apakah string kosong, tidak kosong return true. | [$ A] mengembalikan true. |
Operator String contoh adalah sebagai berikut:
#!/bin/bash # author:本教程 # url:www.w3write.com a="abc" b="efg" if [ $a = $b ] then echo "$a = $b : a 等于 b" else echo "$a = $b: a 不等于 b" fi if [ $a != $b ] then echo "$a != $b : a 不等于 b" else echo "$a != $b: a 等于 b" fi if [ -z $a ] then echo "-z $a : 字符串长度为 0" else echo "-z $a : 字符串长度不为 0" fi if [ -n $a ] then echo "-n $a : 字符串长度不为 0" else echo "-n $a : 字符串长度为 0" fi if [ $a ] then echo "$a : 字符串不为空" else echo "$a : 字符串为空" fi
Mengeksekusi script, output adalah sebagai berikut:
abc = efg: a 不等于 b abc != efg : a 不等于 b -z abc : 字符串长度不为 0 -n abc : 字符串长度不为 0 abc : 字符串不为空
Operator uji file digunakan untuk mendeteksi berbagai atribut berkas Unix.
Atribut deteksi digambarkan sebagai berikut:
operator | penjelasan | contoh |
---|---|---|
File -b | Mendeteksi apakah file tersebut adalah file device blok, dan jika demikian, ia mengembalikan benar. | [-b $ File] mengembalikan false. |
File -c | Mendeteksi apakah file tersebut adalah file device karakter, dan jika demikian, ia mengembalikan benar. | [-c $ File] mengembalikan false. |
File -d | Mendeteksi apakah file tersebut adalah sebuah direktori, dan jika demikian, ia mengembalikan benar. | [-d $ File] mengembalikan false. |
File -f | Mendeteksi apakah file tersebut adalah file biasa (tidak direktori atau file device), dan jika demikian, ia mengembalikan benar. | [-f $ File] mengembalikan true. |
File -g | Mendeteksi apakah file memiliki sedikit SGID, dan jika demikian, ia mengembalikan benar. | [-g $ File] mengembalikan false. |
File -k | Mendeteksi apakah file memiliki sedikit lengket (Sticky Bit), dan jika demikian, ia mengembalikan benar. | [-k $ File] mengembalikan false. |
File-p | Mendeteksi apakah file tersebut adalah pipa bernama, dan jika demikian, ia mengembalikan benar. | [P $ File] mengembalikan false. |
File-u | Mendeteksi apakah file memiliki bit SUID, dan jika demikian, ia mengembalikan benar. | [U $ File] mengembalikan false. |
File-r | Mendeteksi apakah file dapat dibaca, dan jika demikian, ia mengembalikan benar. | [R $ File] mengembalikan true. |
File-w | Mendeteksi apakah file tersebut dapat ditulis, dan jika demikian, ia mengembalikan benar. | [W $ File] mengembalikan true. |
File -x | Mendeteksi apakah file tersebut dieksekusi, dan jika demikian, ia mengembalikan benar. | [-x $ File] mengembalikan true. |
File -s | Mendeteksi apakah file kosong (ukuran file lebih besar dari 0), tidak kosong return true. | [-s $ File] mengembalikan true. |
File -e | Mendeteksi berkas (termasuk direktori) ada, dan jika demikian, ia mengembalikan benar. | [-e $ File] mengembalikan true. |
#!/bin/bash # author:本教程 # url:www.w3write.com file="/var/www/w3big/test.sh" if [ -r $file ] then echo "文件可读" else echo "文件不可读" fi if [ -w $file ] then echo "文件可写" else echo "文件不可写" fi if [ -x $file ] then echo "文件可执行" else echo "文件不可执行" fi if [ -f $file ] then echo "文件为普通文件" else echo "文件为特殊文件" fi if [ -d $file ] then echo "文件是个目录" else echo "文件不是个目录" fi if [ -s $file ] then echo "文件不为空" else echo "文件为空" fi if [ -e $file ] then echo "文件存在" else echo "文件不存在" fi
Mengeksekusi script, output adalah sebagai berikut:
文件可读 文件可写 文件可执行 文件为普通文件 文件不是个目录 文件不为空 文件存在