07/05/2018, 14:59

Các toán tử Shell cơ bản

Có rất nhiều toán tử được hỗ trợ bởi mỗi Shell. Phần hướng dẫn của chúng tôi dựa trên cơ sở Shell mặc định (Bourne) vì thế chúng ta đang bàn về các toán tử của Bourne shell trong chương này. Có các toán tử sau mà chúng ta cần quan tâm: Các toán tử số học Các toán tử quan hệ ...

Có rất nhiều toán tử được hỗ trợ bởi mỗi Shell. Phần hướng dẫn của chúng tôi dựa trên cơ sở Shell mặc định (Bourne) vì thế chúng ta đang bàn về các toán tử của Bourne shell trong chương này.

Có các toán tử sau mà chúng ta cần quan tâm:

  • Các toán tử số học

  • Các toán tử quan hệ

  • Các toán tử logic

  • Các toán tử chuỗi

  • Các toán tử kiểm tra file

Bourne shell lúc đầu không có bất cứ một kỹ thuật nào để trình bày số học đơn giản, nhưng nó sử dụng chương trình ngoại vi, hoặc là awk hoặc là chương trình đơn giản hơn expr.

Dưới đây là ví dụ đơn giản để cộng hai số:

#!/bin/sh

val=`expr 2 + 2`
echo "Total value : $val"

Nó sẽ tạo ra kết quả sau:

Total value : 4

Những điểm mà bạn cần lưu ý là:

  • Phải có một khoảng trống giữa hai toán tử và 2 sự diễn đạt, ví dụ 2+2 là không đúng, nó nên được viết là 2 + 2.

  • Sự diễn đạt đầy đủ nên được bao quanh bởi ``, gọi là dấu phảy bị nghịch đảo.

Các toán tử số học trong Unix/Linux

Các toán tử số học sau được hỗ trợ bởi Bourne shell.

Giả sử biến a giữ giá trị 10 và biến b giữ giá trị 20, thì khi đó:

Toán tửMiêu tảVí dụ
+Phép cộng – thêm giá trị ở mỗi bên vào toán tử `expr $a + $b` kết quả là 30
-Phép trừ – trừ giá trị bên phải của toán tử bên trái `expr $a - $b` kết quả là -10
*Phép nhân – nhân giá trị ở trên mỗi bên với toán tử.`expr $a * $b` kết quả là 200
/Phép chia – chia giá trị bên phải cho giá trị bên trái`expr $b / $a` kết quả là 2
%Lấy số dư – lấy phần còn lại sau khi đã chia giá trị trái cho giá trị bên phải `expr $b % $a` kết quả là 0
=Phép gán – gán toán hạng trái cho toán hạng phải a=$b sẽ gán giá trị của b cho a
==Phép bằng – so sánh hai số, nếu cả hai đều giống nhau thì kết quả trả về là true. [ $a == $b ] sẽ trả về kết quả False.
!=Phép không cân bằng – so sánh hai số, nếu cả hai số khác nhau thì giá trị trả về là true. [ $a != $b ] sẽ trả về kết quả True.

Nó là rất quan trọng để ghi nhớ rằng tại đây tất cả các sự diễn đạt có điều kiện sẽ được đặt trong hai dấu ngoặc ôm vuông ([]) với một dấu cách trống quanh chúng, ví dụ [$a == $b ] là đúng, và [$a==$b] là không đúng.

Tất cả các toán tử số học được thực hiện sử dụng các số nguyên dài.

Các toán tử quan hệ trong Unix/Linux

Bourne shell hỗ trợ các toán tử quan hệ sau mà là riêng với các giá trị số. Những toán tử này không làm việc cho chuỗi trừ khi giá trị của nó là số.

Ví dụ, các toán tử sau sẽ kiểm tra một quan hệ giữa 10 và 20, cũng là giữa "10" và "20" nhưng không giữa "ten" và "twenty'.

Giả sử biến a giữ giá trị 10 và biến b giữ giá trị 20 thì khi đó:

Toán tửMiêu tảVí dụ
-eq Kiểm tra giá trị của hai toán hạng là cân bằng hoặc không, nếu có thì điều kiện trở lên đúng. [ $a -eq $b ] là không đúng.
-ne Kiểm tra giá trị của hai toán hạng là cân bằng hoặc không, nếu không cân bằng thì điều kiện trở lên đúng.[ $a -ne $b ] là đúng.
-gt Kiểm tra nếu giá trị của toán hạng trái lớn hơn giá trị của toán hạng phải, nếu đúng thì điều kiện trở nên đúng. [ $a -gt $b ] là không đúng.
-lt Kiểm tra nếu giá trị của toán hạng trái nhỏ hơn giá trị của toán hạng phải, nếu đúng thì điều kiện trở nên đúng. [ $a -lt $b ] là đúng.
-ge Kiểm tra nếu giá trị của toán hạng trái lớn hơn hoặc bằng giá trị của toán hạng phải, nếu đúng thì điều kiện trở nên đúng. [ $a -ge $b ] là không đúng.
-le Kiểm tra nếu giá trị của toán hạng trái nhỏ hơn hoặc bằng giá trị của toán hạng phải, nếu đúng thì điều kiện trở nên đúng. [ $a -le $b ] là đúng.

Nó là rất quan trọng để ghi nhớ rằng tại đây tất cả các sự diễn đạt có điều kiện sẽ được đặt trong dấu ngoặc ôm vuông ([]) với dấu cách trống quanh chúng, ví dụ [ $a

Loạt bài hướng dẫn học UNIX cơ bản và nâng cao của chúng tôi dựa trên nguồn tài liệu của: Tutorialspoint.com

Follow fanpage của team hoặc facebook cá nhân Nguyễn Thanh Tuyền để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.

Các bài học UNIX phổ biến khác tại VietJack:

0