Unix / Linux - Các toán tử cơ bản của Shell
Có nhiều toán tử khác nhau được hỗ trợ bởi mỗi trình bao. Chúng ta sẽ thảo luận chi tiết về Bourne shell (shell mặc định) trong chương này.
Bây giờ chúng ta sẽ thảo luận về các toán tử sau:
- Toán tử số học
- Toán tử quan hệ
- Toán tử Boolean
- Toán tử chuỗi
- Người điều hành kiểm tra tệp
Bourne shell ban đầu không có bất kỳ cơ chế nào để thực hiện các phép toán số học đơn giản nhưng nó sử dụng các chương trình bên ngoài, awk hoặc là expr.
Ví dụ sau đây cho thấy cách cộng hai số:
#!/bin/sh
val=`expr 2 + 2`
echo "Total value : $val"
Tập lệnh trên sẽ tạo ra kết quả sau:
Total value : 4
Các điểm sau đây cần được xem xét khi thêm:
Phải có khoảng trắng giữa các toán tử và biểu thức. Ví dụ, 2 + 2 là không đúng; nó nên được viết là 2 + 2.
Biểu thức hoàn chỉnh nên được đặt giữa ‘ ‘, được gọi là backtick.
Toán tử số học
Các toán tử số học sau được hỗ trợ bởi Bourne Shell.
Giả sử biến a giữ 10 và biến b giữ 20 sau đó -
Hiển thị các ví dụ
Nhà điều hành | Sự miêu tả | Thí dụ |
---|---|---|
+ (Bổ sung) | Thêm các giá trị ở hai bên của toán tử | `expr $ a + $ b` sẽ cho 30 |
- (Phép trừ) | Trừ toán hạng bên phải khỏi toán hạng bên trái | `expr $ a - $ b` sẽ cho -10 |
* (Phép nhân) | Nhân các giá trị ở hai bên của toán tử | `expr $ a \ * $ b` sẽ cho 200 |
/ (Bộ phận) | Chia toán hạng bên trái cho toán hạng bên phải | `expr $ b / $ a` sẽ cho 2 |
% (Mô-đun) | Chia toán hạng bên trái cho toán hạng bên phải và trả về phần dư | `expr $ b% $ a` sẽ cho 0 |
= (Nhiệm vụ) | Gán toán hạng bên phải trong toán hạng bên trái | a = $ b sẽ gán giá trị của b thành a |
== (Bình đẳng) | So sánh hai số, nếu cả hai đều giống nhau thì trả về true. | [$ a == $ b] sẽ trả về false. |
! = (Không bình đẳng) | So sánh hai số, nếu cả hai khác nhau thì trả về true. | [$ a! = $ b] sẽ trả về true. |
Điều rất quan trọng là phải hiểu rằng tất cả các biểu thức điều kiện phải nằm trong dấu ngoặc vuông với khoảng trắng xung quanh chúng, ví dụ: [ $a == $b ] là đúng trong khi, [$a==$b] là không chính xác.
Tất cả các phép tính số học được thực hiện bằng cách sử dụng số nguyên dài.
Toán tử quan hệ
Bourne Shell hỗ trợ các toán tử quan hệ sau dành riêng cho các giá trị số. Các toán tử này không hoạt động đối với các giá trị chuỗi trừ khi giá trị của chúng là số.
Ví dụ: các toán tử sau sẽ hoạt động để kiểm tra mối quan hệ giữa 10 và 20 cũng như giữa "10" và "20" nhưng không nằm trong khoảng "mười" và "hai mươi".
Giả sử biến a giữ 10 và biến b giữ 20 sau đó -
Hiển thị các ví dụ
Nhà điều hành | Sự miêu tả | Thí dụ |
---|---|---|
-eq | Kiểm tra xem giá trị của hai toán hạng có bằng nhau hay không; nếu có, thì điều kiện trở thành true. | [$ a -eq $ b] không đúng. |
-ne | Kiểm tra xem giá trị của hai toán hạng có bằng nhau hay không; nếu các giá trị không bằng nhau, thì điều kiện trở thành true. | [$ a -ne $ b] là true. |
-gt | Kiểm tra xem giá trị của toán hạng bên trái có lớn hơn giá trị của toán hạng bên phải hay không; nếu có, thì điều kiện trở thành true. | [$ a -gt $ b] không đúng. |
-lt | Kiểm tra xem giá trị của toán hạng bên trái có nhỏ hơn giá trị của toán hạng bên phải hay không; nếu có, thì điều kiện trở thành true. | [$ a -lt $ b] là true. |
-ge | Kiểm tra xem giá trị của toán hạng bên trái có lớn hơn hoặc bằng giá trị của toán hạng bên phải hay không; nếu có, thì điều kiện trở thành true. | [$ a -ge $ b] không đúng. |
-le | Kiểm tra xem giá trị của toán hạng bên trái nhỏ hơn hoặc bằng giá trị của toán hạng bên phải; nếu có, thì điều kiện trở thành true. | [$ a -le $ b] là true. |
Điều rất quan trọng là phải hiểu rằng tất cả các biểu thức điều kiện phải được đặt bên trong dấu ngoặc vuông với khoảng trắng xung quanh chúng. Ví dụ,[ $a <= $b ] là đúng trong khi, [$a <= $b] là không chính xác.
Toán tử Boolean
Các toán tử Boolean sau đây được hỗ trợ bởi Bourne Shell.
Giả sử biến a giữ 10 và biến b giữ 20 sau đó -
Hiển thị các ví dụ
Nhà điều hành | Sự miêu tả | Thí dụ |
---|---|---|
! | Đây là sự phủ định logic. Điều này biến một điều kiện đúng thành sai và ngược lại. | [! false] là true. |
-o | Điều này là hợp lý OR. Nếu một trong các toán hạng là true, thì điều kiện trở thành true. | [$ a -lt 20 -o $ b -gt 100] là true. |
-a | Điều này là hợp lý AND. Nếu cả hai toán hạng đều đúng, thì điều kiện trở thành đúng, ngược lại là sai. | [$ a -lt 20 -a $ b -gt 100] là sai. |
Toán tử chuỗi
Các toán tử chuỗi sau được Bourne Shell hỗ trợ.
Giả sử biến a giữ "abc" và biến b giữ "efg" sau đó -
Hiển thị các ví dụ
Nhà điều hành | Sự miêu tả | Thí dụ |
---|---|---|
= | Kiểm tra xem giá trị của hai toán hạng có bằng nhau hay không; nếu có, thì điều kiện trở thành true. | [$ a = $ b] không đúng. |
!= | Kiểm tra xem giá trị của hai toán hạng có bằng nhau hay không; nếu các giá trị không bằng nhau thì điều kiện trở thành true. | [$ a! = $ b] là đúng. |
-z | Kiểm tra xem kích thước toán hạng chuỗi đã cho có bằng 0 hay không; nếu nó có độ dài bằng 0, thì nó trả về true. | [-z $ a] không đúng. |
-n | Kiểm tra xem kích thước toán hạng chuỗi đã cho có khác 0 không; nếu nó là độ dài khác không, thì nó trả về true. | [-n $ a] không sai. |
str | Kiểm tra nếu strkhông phải là chuỗi rỗng; nếu nó trống, thì nó trả về false. | [$ a] không sai. |
Người điều hành kiểm tra tệp
Chúng tôi có một số toán tử có thể được sử dụng để kiểm tra các thuộc tính khác nhau được liên kết với tệp Unix.
Giả sử một biến file giữ một tên tệp hiện có "kiểm tra" kích thước của nó là 100 byte và có read, write và execute sự cho phép trên -
Hiển thị các ví dụ
Nhà điều hành | Sự miêu tả | Thí dụ |
---|---|---|
-b file | Kiểm tra xem tệp có phải là tệp đặc biệt của khối không; nếu có, thì điều kiện trở thành true. | [-b $ file] là sai. |
-c file | Kiểm tra xem tệp có phải là tệp đặc biệt không; nếu có, thì điều kiện trở thành true. | [-c $ file] là sai. |
-d file | Kiểm tra xem tệp có phải là một thư mục hay không; nếu có, thì điều kiện trở thành true. | [-d $ file] không đúng. |
-f file | Kiểm tra xem tệp có phải là tệp thông thường hay không so với thư mục hoặc tệp đặc biệt; nếu có, thì điều kiện trở thành true. | [-f $ file] là true. |
-g file | Kiểm tra xem tệp có tập hợp bit ID nhóm (SGID) không; nếu có, thì điều kiện trở thành true. | [-g $ file] là sai. |
-k file | Kiểm tra xem tệp có tập hợp bit dính hay không; nếu có, thì điều kiện trở thành true. | [-k $ file] là sai. |
-p file | Kiểm tra xem tệp có phải là một đường ống được đặt tên hay không; nếu có, thì điều kiện trở thành true. | [-p $ file] là sai. |
-t file | Kiểm tra xem bộ mô tả tệp có đang mở và được liên kết với thiết bị đầu cuối hay không; nếu có, thì điều kiện trở thành true. | [-t $ file] là sai. |
-u file | Kiểm tra xem tệp có tập bit Set User ID (SUID) hay không; nếu có, thì điều kiện trở thành true. | [-u $ file] là sai. |
-r file | Kiểm tra xem tệp có thể đọc được không; nếu có, thì điều kiện trở thành true. | [-r $ file] là đúng. |
-w file | Kiểm tra xem tệp có thể ghi được không; nếu có, thì điều kiện trở thành true. | [-w $ file] là đúng. |
-x file | Kiểm tra xem tệp có thực thi được không; nếu có, thì điều kiện trở thành true. | [-x $ file] là đúng. |
-s file | Kiểm tra xem tệp có kích thước lớn hơn 0 hay không; nếu có, thì điều kiện trở thành đúng. | [-s $ file] là đúng. |
-e file | Kiểm tra nếu tệp tồn tại; là đúng ngay cả khi tệp là một thư mục nhưng tồn tại. | [-e $ file] là đúng. |
C Shell Operator
Liên kết sau sẽ cung cấp cho bạn một ý tưởng ngắn gọn về C Shell Operator -
C Shell Operator
Korn Shell Operator
Liên kết sau giúp bạn hiểu các toán tử Korn Shell -
Korn Shell Operator