Latest web development tutorials

operator dasar shell

Shell dan bahasa pemrograman lainnya, mendukung berbagai operator, termasuk:

  • operator aritmatika
  • Operator relasional
  • operator boolean
  • Operator String
  • Berkas Uji Operator

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"

Menjalankan contoh »

Mengeksekusi script, output adalah sebagai berikut:

两数之和为 : 4

Dua hal yang perlu diperhatikan:

  • Antara ekspresi dan operator harus memiliki ruang, misalnya, 2 + 2 adalah salah, Anda harus menulis 2 + 2, yang kita kenal dengan bahasa pemrograman yang paling tidak sama.
  • ekspresi lengkap untuk menjadi `` terkandung, perhatikan bahwa karakter ini tidak umum digunakan dalam tanda kutip tunggal, di bawah tombol Esc.

operator aritmatika

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].

contoh

operator aritmatika contoh adalah sebagai berikut:

#!/bin/bash
# author:本教程
# url:www.w3big.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 ... maka ... fi pernyataan bersyarat, tindak lanjut akan dibahas.
  • Dalam shell MAC sintaks expr adalah: $ ((ekspresi)), di mana ekspresi "*" perlu untuk melarikan diri simbol "\."

Operator relasional

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.

contoh

operator relasional contoh adalah sebagai berikut:

#!/bin/bash
# author:本教程
# url:www.w3big.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

operator boolean

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.

contoh

operator Boolean contoh adalah sebagai berikut:

#!/bin/bash
# author:本教程
# url:www.w3big.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

Operator logis

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

Contoh operator logika adalah sebagai berikut:

#!/bin/bash
# author:本教程
# url:www.w3big.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

Operator String

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.

contoh

Operator String contoh adalah sebagai berikut:

#!/bin/bash
# author:本教程
# url:www.w3big.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 : 字符串不为空

Berkas Uji Operator

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.

contoh

File variabel menunjukkan file "/var/www/w3big/test.sh", ukurannya adalah 100 byte, dengan izin rwx. Kode berikut akan mendeteksi berbagai atribut dari file:

#!/bin/bash
# author:本教程
# url:www.w3big.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:

文件可读
文件可写
文件可执行
文件为普通文件
文件不是个目录
文件不为空
文件存在