Hướng dẫn cho người mới bắt đầu để BASH - So sánh mọi thứ

01/08

Hướng dẫn cho người mới bắt đầu để BASH - So sánh mọi thứ

Hướng dẫn BASH - So sánh các chuỗi.

Trong phần trước của hướng dẫn BASH, chúng tôi đã xem xét các câu lệnh có điều kiện .

Hướng dẫn đó rất dài nhưng thực sự chỉ cho thấy cách kiểm soát luồng logic. Hướng dẫn này hiển thị các cách khác nhau mà bạn có thể so sánh các biến.

Hình trên cho thấy ví dụ đầu tiên trong hướng dẫn của tuần này:

#! / bin / bash

name1 = "gary"
name2 = "bob"

nếu ["$ name1" = "$ name2"]
sau đó
echo "tên trùng khớp"
khác
echo "tên không khớp"
fi


Trong kịch bản trên, tôi đã định nghĩa hai biến được gọi là name1 và name2 và gán cho chúng các giá trị "gary" và "bob". Khi các biến được chứa giữa các dấu ngoặc kép, chúng được gọi là các biến chuỗi trở nên có liên quan hơn khi hướng dẫn tiếp tục.

Tất cả các kịch bản nào là so sánh giá trị của $ name1 và $ name2 và nếu chúng khớp với đầu ra chuỗi "tên trùng khớp" và nếu chúng không xuất chuỗi "tên không khớp".

Dấu ngoặc kép xung quanh biến $ name1 và $ name2 là quan trọng bởi vì nếu giá trị của một trong hai biến này chưa được đặt thì tập lệnh sẽ vẫn hoạt động.

Ví dụ: nếu $ name1 chưa bao giờ được đặt thì bạn sẽ so sánh "" với "bob". Nếu không có dấu ngoặc kép, bạn sẽ bị bỏ lại với dấu "bob" rõ ràng không thành công.

Bạn cũng có thể sử dụng ký hiệu! = Để xác định không bằng như sau:

nếu ["$ name1"! = "$ name2"]

02/08

Hướng dẫn cho người mới bắt đầu để BASH - So sánh các chuỗi

Hướng dẫn BASH - So sánh các chuỗi.

Trong ví dụ trên, thử nghiệm so sánh hai chuỗi giống nhau và hỏi câu hỏi có gary đến trước bob trong bảng chữ cái không?

Rõ ràng câu trả lời là không.

Kịch bản giới thiệu toán tử nhỏ hơn (<). Vì toán tử nhỏ hơn cũng được sử dụng để chuyển hướng, bạn phải thoát nó bằng dấu gạch chéo (\) để có nghĩa là ít hơn lý do tại sao trong kịch bản trên tôi so sánh "$ name1" \ <"$ name2".

Ngược lại ít hơn rõ ràng là lớn hơn. Thay vì sử dụng \ .

Ví dụ

nếu ["$ name1" \> "$ name2"]

03/08

Hướng dẫn cho người mới bắt đầu để BASH - So sánh các chuỗi

Hướng dẫn BASH - So sánh các chuỗi.

Nếu bạn muốn kiểm tra xem biến có giá trị bạn có thể sử dụng thử nghiệm sau không:

nếu [-n $ name2]

Trong kịch bản trên, tôi đã kiểm tra xem $ name2 đã được đưa ra một giá trị hay không và nếu nó không phải là thông báo "Không có bob, không bao giờ có một bob xuất hiện".

04/08

Hướng dẫn cho người mới bắt đầu để BASH - So sánh các chuỗi

Hướng dẫn BASH - So sánh các chuỗi.

Trên trang trình bày trước, chúng tôi đã đề cập đến việc một biến đã được đặt hay chưa. Đôi khi, mặc dù một biến có thể đã được đặt nhưng nó có thể không thực sự có giá trị.

Ví dụ:

name1 = ""

Để kiểm tra xem một biến có giá trị hay không (tức là có độ dài bằng 0), hãy dùng -z như sau:

nếu [-z $ name1]

Trong kịch bản trên, tôi đã đặt $ name1 thành chuỗi có độ dài bằng không và sau đó so sánh nó bằng -z. Nếu $ name1 có độ dài bằng 0 thì thông báo "gary đã hết hạn" sẽ được hiển thị.

05/08

Hướng dẫn cho người mới bắt đầu để BASH - So sánh số

Hướng dẫn BASH - So sánh số.

Vì vậy, đến nay tất cả các so sánh đã được cho chuỗi. Điều gì về so sánh số?

Kịch bản trên cho thấy một ví dụ về so sánh hai số:

#! / bin / bash

a = 4
b = 5

nếu [$ a = $ b]
sau đó
echo "4 = 5"
khác
echo "4 không bằng 5"
fi

Để đặt biến thành một số, bạn chỉ cần đặt số đó không có dấu ngoặc kép. Sau đó bạn có thể so sánh các con số với dấu bằng.

Tuy nhiên, tôi thích sử dụng toán tử sau để so sánh hai số:

Nếu [$ a -eq $ b]

06/08

Hướng dẫn cho người mới bắt đầu để BASH - So sánh số

Hướng dẫn BASH - So sánh số.

Nếu bạn muốn so sánh xem một số có nhỏ hơn số khác không, bạn có thể sử dụng toán tử nhỏ hơn (<). Như với các chuỗi, bạn phải thoát khỏi toán tử nhỏ hơn với một dấu gạch chéo. (\ <).

Cách tốt hơn để so sánh các số là sử dụng ký hiệu sau thay vào đó:

Ví dụ:

nếu [$ a -lt $ b]

nếu [$ a -le $ b]

nếu [$ a -ge $ b]

nếu [$ a -gt $ b]

07/08

Hướng dẫn cho người mới bắt đầu để BASH - So sánh số

Hướng dẫn BASH - So sánh số.

Cuối cùng cho hướng dẫn này, nếu bạn muốn kiểm tra xem hai số có khác nhau không, bạn có thể sử dụng hoặc nhỏ hơn và lớn hơn các toán tử cùng nhau (<>) hoặc -ne như sau:

nếu [$ a <> $ b]

nếu [$ a-một $ b]

08/08

Hướng dẫn cho người mới bắt đầu để BASH - Các toán tử so sánh - Tóm tắt

Nếu bạn đã bỏ lỡ ba phần đầu của hướng dẫn này, bạn có thể tìm thấy chúng bằng cách nhấp vào các liên kết sau:

Trong phần tiếp theo của hướng dẫn, tôi sẽ bao gồm số học.