Cách đánh giá biểu thức trong Linux bằng expr

Tác giả Security+, T.Hai 06, 2024, 11:06:01 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách đánh giá biểu thức trong Linux bằng expr


Thể hiện các phép tính của bạn trong thiết bị đầu cuối với expr.

  • Lệnh expr có thể đánh giá các biểu thức và đưa ra giá trị tương ứng. Bạn có thể sử dụng nó để thực hiện các phép tính số học, so sánh và các phép toán chuỗi.
  • Sử dụng lệnh expr, bạn có thể tìm kiếm các mẫu cụ thể trong văn bản, xác thực thông tin nhập của người dùng và thậm chí thay thế văn bản dựa trên các mẫu đã xác định.
  • Lệnh expr cũng có thể thao tác các chuỗi bằng cách sử dụng các hàm chuỗi như tìm độ dài, so sánh chuỗi và trích xuất chuỗi con.

Bạn muốn thực hiện một số phép tính đơn giản trong Linux? Chỉ cần sử dụng lệnh expr. Lệnh này có thể thực hiện nhiều thao tác khác nhau, chẳng hạn như đánh giá biểu thức, trích xuất chuỗi con, so sánh chuỗi, v.v. Sử dụng expr, bạn có thể cộng, trừ, nhân hoặc chia hai số và nhận kết quả làm đầu ra.

1. Lệnh expr

expr là một công cụ có thể thực hiện các phép tính và thao tác với chuỗi dựa trên các biểu thức bạn cung cấp. Với lệnh expr, bạn có thể thực hiện nhiều thao tác khác nhau trên số nguyên và chuỗi, như so sánh các giá trị hoặc tìm các mẫu cụ thể bằng cách sử dụng biểu thức chính quy.

Bạn có thể chuyển nhiều biểu thức tới expr dưới dạng đối số, cách nhau bằng dấu cách. Nó không chỉ đánh giá một biểu thức mà còn hiển thị đầu ra tương ứng của nó trên thiết bị đầu cuối. Lệnh expr hoạt động cả trong terminal Bash và shell script.

Lệnh expr rất hữu ích khi thao tác dữ liệu hoặc thực hiện các phép tính mà không cần rời khỏi thiết bị đầu cuối. Tuy nhiên, bạn cần cẩn thận với cú pháp và thứ tự của các biểu thức, nếu không lệnh sẽ thất bại và hiển thị thông báo lỗi.

Cú pháp của lệnh expr là:

Mã nguồn [Chọn]
expr expression
... trong đó biểu thức có thể là sự kết hợp của các đối số và toán tử. Ví dụ: biểu thức dưới đây đánh giá hoạt động giữa arg1 và arg2 và hiển thị kết quả:

Mã nguồn [Chọn]
expr arg1 operator arg2
Các đối số có thể là số hoặc chuỗi, tùy thuộc vào toán tử. Các toán tử có thể là số học, quan hệ, liên quan đến chuỗi hoặc logic. Đó là biểu tượng chỉ rõ thao tác sẽ được thực hiện. Ví dụ: đối với số nguyên, bạn có thể sử dụng các toán tử như +, -, *, / và %.

Đối với chuỗi, bạn có thể sử dụng biểu thức chính quy và bộ ký tự để tìm kết quả khớp và chỉ mục. Bạn cũng có thể sử dụng dấu ngoặc đơn để nhóm các biểu thức và dấu gạch chéo ngược để thoát khỏi các ký tự đặc biệt.

2. Tùy chọn lệnh expr

Mặc dù expr không có các tùy chọn dòng lệnh truyền thống nhưng nó cung cấp các toán tử linh hoạt cho số học, thao tác chuỗi và so sánh. Hơn nữa, bạn có thể sử dụng tùy chọn --help để hiển thị trang trợ giúp của expr, trang này giải thích cú pháp, tính năng và ví dụ của nó:

Mã nguồn [Chọn]
expr --help

Để kiểm tra phiên bản lệnh expr, hãy chạy:

Mã nguồn [Chọn]
expr --version

Tùy chọn này hiển thị số phiên bản, mã nguồn, giấy phép và tác giả của expr.

3. Thực hiện các phép tính số học với expr

Để sử dụng lệnh expr cho các phép tính số học cơ bản, hãy viết lệnh expr theo sau là khoảng trắng. Sau đó, viết biểu thức mà bạn muốn đánh giá. Biểu thức này là sự kết hợp của các số nguyên và toán tử như +, -, * và /. Đảm bảo phân tách từng mã thông báo (số nguyên hoặc toán tử) trong biểu thức bằng ký tự khoảng trắng.

Ví dụ: nếu bạn muốn tìm tổng của 15 và 12 bằng expr, bạn có thể viết:

Mã nguồn [Chọn]
expr 15 + 12

Tương tự, bạn có thể sử dụng lệnh expr để thực hiện các phép tính số học khác, chẳng hạn như phép trừ, nhân và chia. Hãy đánh giá một số biểu thức bằng lệnh expr:

Mã nguồn [Chọn]
expr 15 - 12
expr 15 \* 5
expr 10 / 2


Bạn cần thoát toán tử nhân (*) bằng dấu gạch chéo ngược (\) để tránh mở rộng shell. Nếu không, shell sẽ cố gắng khớp toán tử (*) với tên tệp trong thư mục hiện tại và chuyển chúng tới lệnh expr, điều này sẽ gây ra lỗi.


Bạn cũng có thể ngăn shell diễn giải các ký tự bằng cách trích dẫn chính xác các đối số và toán tử:

Mã nguồn [Chọn]
expr "5" "*" "3"

4. So sánh hai biểu thức với expr

Để so sánh hai biểu thức bằng lệnh expr, bạn có thể sử dụng các toán tử logic như =, <, > và !=. Nếu bạn thấy lệnh đầu ra là 1 thì điều kiện là đúng, nếu không thì nó là sai và giá trị trả về là 0.

Ví dụ: để kiểm tra xem đối số thứ nhất có bằng đối số thứ hai hay không, chúng ta sử dụng toán tử =:

Mã nguồn [Chọn]
expr 40 = 50

Bây giờ, hãy kiểm tra xem đối số đầu tiên có nhỏ hơn đối số còn lại hay không. Để làm điều đó, chúng tôi sử dụng toán tử <:

Mã nguồn [Chọn]
expr 40 \< 50

Bạn cũng có thể kiểm tra xem các giá trị có bằng nhau hay không. Để làm điều đó, chỉ cần sử dụng toán tử != giữa các giá trị của hai đối số:

Mã nguồn [Chọn]
expr 45 \!= 55

Ở đây, đầu ra 1 chỉ ra rằng 45 không bằng 55.

Bằng cách này, lệnh expr cung cấp một phương pháp đơn giản và hiệu quả để so sánh các giá trị số.

Giống như toán tử nhân (*), các toán tử <, > và != cũng cần được thoát bằng dấu gạch chéo ngược (\). Nếu không, chúng có thể được shell hiểu là các ký tự đặc biệt.

5. Tìm độ dài của chuỗi bằng expr

Để tìm độ dài của chuỗi bằng lệnh expr, bạn có thể sử dụng phương thức length. Toán tử này sẽ trả về số lượng ký tự có trong chuỗi đã cho ở đầu ra.

Ví dụ: để tìm độ dài của chuỗi 'Viet Network', hãy chạy lệnh này:

Mã nguồn [Chọn]
expr length 'Viet Network'
Kết quả đầu ra là 12 vì có mười một ký tự và một khoảng trắng trong chuỗi. Nếu muốn tìm độ dài của chuỗi không có khoảng trắng, trước tiên bạn có thể sử dụng các lệnh khác như tr hoặc awk để xóa chúng. Ví dụ:

Mã nguồn [Chọn]
expr length "$(echo 'Viet Network' | tr -d ' ')"
Đầu ra sẽ là mười một vì lệnh tr xóa tất cả khoảng trắng trong chuỗi trước khi chuyển nó sang lệnh expr length.

6. Kết hợp hai chuỗi với expr

Một trong những thao tác mà expr cung cấp là so sánh hai chuỗi. Để làm điều này, hãy sử dụng toán tử dấu hai chấm (:) với lệnh expr. Toán tử này trả về số ký tự khớp ở đầu cả hai chuỗi.

Cú pháp sử dụng toán tử này là:

Mã nguồn [Chọn]
expr string1 : string2
Điều này so sánh hai chuỗi và trả về số ký tự trùng khớp từ đầu chuỗi.

Ví dụ: lệnh bên dưới sẽ xuất ra năm ký tự, vì cả hai chuỗi đều có năm ký tự đầu tiên chung:

Mã nguồn [Chọn]
expr 'VietNetwork' : 'Viet'
Hãy xem xét một ví dụ khác, trong đó hai chuỗi đã cho giống nhau:

Mã nguồn [Chọn]
expr 'VietNetwork' : 'VietNetwork'
Đầu ra là 12 vì cả hai chuỗi đều có tất cả các ký tự chung, bao gồm cả khoảng trắng.

Nếu không có ký tự trùng khớp thì đầu ra sẽ bằng 0:

Mã nguồn [Chọn]
expr 'VietNetwork' : 'Linux'
7. Tăng và Giảm một biến với expr

Lệnh expr cũng có thể đánh giá một biểu thức tăng và giảm giá trị của một biến. Hơn nữa, bạn có thể gán kết quả cho một biến mới.

Hãy xem xét ví dụ bên dưới, trong đó chúng ta đã xác định một biến "a" và tăng giá trị của nó bằng lệnh expr:
 
Mã nguồn [Chọn]
a=20
a=`expr $a + 1`
echo $a


Tương tự, để giảm giá trị biến, sử dụng cú pháp tương tự nhưng thay dấu cộng bằng phép trừ:

Mã nguồn [Chọn]
a=20
a=`expr $a - 1`
echo $a


8. Trích xuất chuỗi con bằng expr

Để trích xuất một chuỗi con từ một chuỗi nhất định, bạn có thể sử dụng lệnh expr với toán tử substr. Bằng cách này, bạn có thể trích xuất thông tin cụ thể từ một văn bản lớn hơn, chẳng hạn như tên, ngày tháng hoặc bất kỳ mã nào. Bạn cũng có thể sử dụng toán tử này để xóa các ký tự hoặc dấu cách không mong muốn khỏi chuỗi.

Hãy xem xét các lệnh ví dụ sau, trong đó một chuỗi mới được khởi tạo. Sau đó, sử dụng lệnh expr, chúng ta sẽ nhận được các ký tự thứ hai đến thứ năm từ chuỗi "VietNetwok":

Mã nguồn [Chọn]
[code]a=VietNetwok
b=`expr substr $a 2 5`
echo $b
[/code]

9. Thực hiện các thao tác expr bằng Shell Script

Để tự động xử lý biểu thức bằng lệnh expr, bạn có thể tạo tập lệnh shell tùy chỉnh. Tập lệnh Shell là công cụ đa năng có thể giúp bạn làm được nhiều việc hơn với ít chi phí hơn. Với tập lệnh shell, bạn có thể tự động hóa các tác vụ lặp đi lặp lại, thao tác dữ liệu và thực hiện các phép tính phức tạp.

Ví dụ: bạn có thể tạo tập lệnh để cộng hai số bằng lệnh expr. Trước tiên, bạn cần tạo một tệp có phần mở rộng ".sh", chẳng hạn như "my_script.sh". Điều này cho shell biết rằng đó là một tập tin script. Tiếp theo, bạn cần viết một mã có thể lấy hai số làm đầu vào và xuất ra tổng của chúng. Đây là một tập lệnh mẫu có thể làm điều đó:
 
Mã nguồn [Chọn]
echo "Enter two numbers"
read a
read b
sum=`expr $a + $b`
echo "Sum of two numbers is= $sum"


Tập lệnh này sử dụng lệnh expr để đánh giá các phép tính số học trên các biến "a" và "b." Lệnh echo in một thông báo tới đầu ra tiêu chuẩn, trong khi lệnh đọc đọc một dòng từ đầu vào tiêu chuẩn và đặt nó vào một biến.

Tiếp theo, để làm cho tập lệnh này có thể thực thi được, hãy chạy lệnh chmod :

Mã nguồn [Chọn]
chmod +x my_script.sh
Bây giờ, hãy tiến hành thực thi tập lệnh bằng cách chạy:

Mã nguồn [Chọn]
./my_script.sh

Bạn sẽ được nhắc nhập hai số. Sau khi nhập số, bạn sẽ thấy đoạn script hiển thị tổng của cả hai số trên màn hình. Bạn cũng có thể sửa đổi tập lệnh để thực hiện các thao tác hoặc tác vụ khác theo nhu cầu của mình.

10. Hãy thử một số lệnh Linux thay thế

Bài viết này chủ yếu tập trung vào lệnh expr, nhưng bạn cũng có thể thử một số lệnh khác cho các hoạt động khác nhau. Các lệnh này bao gồm khai báo, let và bc. Tất cả các công cụ dòng lệnh này có thể thực hiện các phép toán từ đơn giản đến phức tạp trên các giá trị được xác định.

Lệnh khai báo có thể tạo và sửa đổi các biến và thuộc tính của chúng. Tương tự, lệnh let đánh giá các biểu thức số học trên các biến shell. Cuối cùng, bc là một máy tính dòng lệnh hỗ trợ số học có độ chính xác tùy ý và các hàm toán học khác nhau. Nó cũng có thể phân tích ngôn ngữ kịch bản hỗ trợ vòng lặp, câu lệnh điều kiện và biến.